返回列表 上一主題 發帖

[發問] 怎樣用函數把每八個星期為一個循環同時變換狀態的條件格式化?

本帖最後由 ML089 於 2017-1-15 05:00 編輯

格式化條件公式

主休(不可以選)               
B2=MOD(INT((B2-$B$2)/56),7)=WEEKDAY(B2,3)               

               
小息 (可以選)               
B2 =N(MOD(INT((B2-$B$2)/56)+1,7) = WEEKDAY(B2,3)) *(MOD(INT((B2-$B$2)/7),2)=IF($K$2=8,1,0))
簡化少一個MOD
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

格格式化公式 B2

主休 (可調選 J2)       
B2 =N(MOD(INT((B2-$B$2)/56)+MATCH($J$2,$B$1:$H$1,)-1,7)=WEEKDAY(B2,3))       
WEEKDAY(B2,3)是星期一由0開始       
56是8周天數(7*8)       
       
       
小息 (可調選 K2)       
  9.6 時,在第 1、3、5、7 星期的主休日後面加多一天
  8    時,在第 2、4、6、8 星期的主休日後面加多一天
  注意,星期日時是該周星期一休
B2 =N(MOD(INT((B2-$B$2)/56)+MATCH($J$2,$B$1:$H$1,)-0,7)=WEEKDAY(B2,3))
*(MOD(INT((B2-$B$2)/7),2)=IF($K$2=8,1,0))       

RCondition_Fix 主休小息每八個星期就一個循環.rar (67.18 KB)
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 4# maiko

星期日主休接下周星期一主休時,若小息是單周休時就會造成三天連假,若小息是雙周休時就不會造成三天連假,這與52周循環沒有關係。
這部分需求有些奇怪?
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 6# maiko

>>是這樣要求的,每次都在主休是 星期日 換 星期一的時候,如果是雙周的話,那麼星期一也是雙周(這時才有機會連續三天),反之如果是單周的話,那麼星期一也是單周(這時只有連續兩天)。
>>確實是跟56個星期無關,只是每次都在星期日換星期一的時候,這樣算起來就隔了 7 * 8 = 56 個星期了。

>>謝謝! 請多費思量一下,這樣的話是怎麼達成的?


小息是雙周休的沒有此問題
小息是單周休的在主休為星期日改為星期一那八周全部改為雙周休嗎? 再過 56 個星期再改為單周休時還是有此問題(連休三天)?
問題是否改為 主休為星期日改為星期一那八周小息全部為雙周休,其他不變這樣嗎?
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 8# maiko

1. 小息全部排在雙周就可以決解問題

2. 一年一次連續三天,這會有甚麼影響? 還不是每8周休8+4天
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 10# maiko

最近忙稍慢來討論
因為排列邏輯上仍有些未解,遲遲未能下手,
小息部分建議星期二時先設為雙周休,跟你的初步要求相同

小息B2格式化公式
=N(MOD(INT((B2-$B$2)/56)+MATCH($J$2,$B$1:$H$1,)-0,7)=WEEKDAY(B2,3)) * (MOD(INT((B2-$B$2)/7),2)=IF(WEEKDAY(B2,3)=1,1,IF($K$2=8,1,0)))
   
公式說明 =(星期判斷) * (單雙周判斷)
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題