請問版上大大~為了不讓同仁太過操勞,也不能讓同仁連續休假太多避免不公,因此小弟有統計班表"連續上班"跟"連續休假"次數的需求,想請問是否有大神可以指導公式的編寫技巧,在此先對看此文章的各位說聲 謝謝,班表如下圖~
我只會輔助格~比如資料是從A3:A999 你可以在E3打=IF(B1=5,"",IF(B2="",IF(COUNTIF(A3:A7,"值班")=5,5,IF(COUNTIF(A3:A6,"值班")=4,4,IF(COUNTIF(A3:A5,"值班")=3,3,""))),""))第一個與第二個判斷主要是避免連續,因為優先判斷連續5天,最後再3天,但會出現符合5天的下一格符合4天,在下一格符合3天-------------------------------------------另外上面只是輔助格最後你連續5天處,要=countif(E3:E999,5)
可以使用连续性函数来计算连续上班或连续休假的天数。例如,如果你有一个班表的表格,其中一列是日期,另一列是上班/休假的状态,可以使用以下公式:计算连续上班天数:=MAX(IF(A2:A31=A2,IF(B2:B31="上班",COUNTIF(A2:A31,A2:A31),""),0))计算连续休假天数:=MAX(IF(A2:A31=A2,IF(B2:B31="休假",COUNTIF(A2:A31,A2:A31),""),0))其中 A 列是日期列,B 列是上班/休假状态列。在上述公式中,MAX 函数用于找出最大值,IF 函数用于判断当前日期是否与前一天相同,COUNTIF 函数用于统计连续相同状态的天数。
我的是用EXCEL作法:在3次工作表B2輸入公式=IF(COUNTIF(OFFSET(工作表1!B2,,,-MIN(ROW(B1),3)),"值班")=3,1,"")再將公式複製到B2:D32。(預計31天)在4次工作表B2輸入公式=IF(COUNTIF(OFFSET(工作表1!B2,,,-MIN(ROW(B1),4)),"值班")=4,1,"")再將公式複製到B2:D32。(預計31天)在5次工作表B2輸入公式=IF(COUNTIF(OFFSET(工作表1!B2,,,-MIN(ROW(B1),5)),"值班")=5,1,"")再將公式複製到B2:D32。(預計31天)再在工作表1G2:=SUM('3次'!B:B)向右複製公式到H2:I2。再在工作表1G3:=SUM('4次'!B:B)向右複製公式到H3:I3。再在工作表1G4:=SUM('5次'!B:B)向右複製公式到H4:I4。
樓主 這種很難通用因為一般你系統上 看跳出很簡易的其實是用多表格統計只是它呈現主表附表隱藏在系統數據端計算~我的公式你可以參考我如何避免重複,用類似的邏輯即可可是若有其他需求要先說~不太可能通用不過可能我功力淺薄錦子老師 才是真大師比如你要7天以上,甚至連8連9你可以改+判斷式 判斷他是連續值 即呈現空白E2=IF(COUNTIF(A2:A3,"值班")=2,"",IF(COUNTIF(A3:A7,"值班")=5,5,IF(COUNTIF(A3:A6,"值班")=4,4,IF(COUNTIF(A3:A5,"值班")=3,3,""))))
E6=IF(B7<>"值班",IF(B6="值班",COUNTIF(B$6:B6,"值班"),0),0)H6=E6-MAX(E$5:E5)K6=IF(B7<>"休",IF(B6="休",COUNTIF(B$6:B6,"休"),0),0)N6=K6-MAX(K$5:K5)B1=COUNTIF(H$6:H$21,MID($A1,2,1))F1=COUNTIF(N$6:N$21,MID($E1,2,1))
jaredsam wrote:樓主 這種很難通用因...(恕刪) 謝謝你,讓我又有另外的解法。E6:=IF(COUNTIF(B6:B7,"值班")=2,2,"")&IF(COUNTIF(B6:B8,"值班")=3,3,"")&IF(COUNTIF(B6:B9,"值班")=4,4,"")&IF(COUNTIF(B6:B10,"值班")=5,5,"")&IF(COUNTIF(B6:B11,"值班")=6,6,"")再將公式複製到E6:G32B1:=COUNT(FIND(ROW()+2,E6:E36))再將公式複製到B2:D4
E6:=IF(B6="值班",IF(B7="值班","",IF(COUNTIF(B1:B6,"值班")=6,6,IF(COUNTIF(B4:B6,"值班")=5,5,IF(COUNTIF(B4:B6,"值班")=4,4,IF(COUNTIF(B4:B6,"值班")=3,3,""))))),"")將公式複製到E6:G36H6:=IF(B6="休",IF(B7="休","",IF(COUNTIF(B1:B6,"休")=6,6,IF(COUNTIF(B4:B6,"休")=5,5,IF(COUNTIF(B4:B6,"休")=4,4,IF(COUNTIF(B4:B6,"休")=3,3,""))))),"")將公式複製到H6:J36F1:=COUNTIF(E$6:E$36,ROW()+2)將公式複製到F1:H3J1:=COUNTIF(H$6:H$36,ROW()+2)將公式複製到J1:L3