Board logo

標題: [發問] 只拉出選週一至週五的工作日 [打印本頁]

作者: hkyan    時間: 2013-11-14 11:54     標題: 只拉出選週一至週五的工作日

請大大幫忙
要作一個出勤表,由於是5天工作,員工有11名的話,現在要自行輸入日期,拖曳複制11次,十分笨的操作.
有辦法內建,下拉就能撇除所有星期六、日及公衆假期(香港)的嗎?

日期                              職員                出勤時間
13/11/01 (Fri)        員工1
13/11/01 (Fri)        員工2
13/11/01 (Fri)        員工3
13/11/01 (Fri)        員工4
13/11/01 (Fri)        員工5
13/11/01 (Fri)        員工6
13/11/01 (Fri)        員工7
13/11/01 (Fri)        員工8
13/11/01 (Fri)        員工9
13/11/01 (Fri)        員工10
13/11/01 (Fri)        員工11
作者: sunnyso    時間: 2013-11-14 21:39

回復 1# hkyan

like this?
[attach]16700[/attach]
作者: luhpro    時間: 2013-11-15 00:21

請大大幫忙
要作一個出勤表,由於是5天工作,員工有11名的話,現在要自行輸入日期,拖曳複制11次,十分笨的操作 ...
hkyan 發表於 2013-11-14 11:54

回復 1# hkyan
假設假日日期列表放在 I2 ~
員工姓名放在 J2 ~ J12
日期 A2==IF(ISERROR(VLOOKUP(ROW(A2),$E$2:$F$40,2,0)),"",VLOOKUP(ROW(A2),$E$2:$F$40,2,0))  (以下拖曳複製)
上班員工 B2==INDIRECT(CONCATENATE("J",MOD(ROW(B2)-2,11)+2),1)  (以下拖曳複製)
假日註記 C2==IF(ISERROR(MATCH(F2,$I$2:$I$15,0)),"","假日") (以下拖曳複製)
D1=1
中繼計算列號 D2==IF(D1>100,IF(C2<>"假日",D1-100+1,D1-100),IF(C2<>"假日",D1+1,D1+100))  (以下拖曳複製)
E1=1
日期索引列號 E2==IF(D2<100,D2,"")  (以下拖曳複製)
F1=2013/10/31 (首日之前一日)
非星期六日日期列表 F2==F1+CHOOSE(WEEKDAY(F1+1,2),1,1,1,1,1,3,2)  (以下拖曳複製)

則 A、B 欄就是你要的資料.

下方附檔中假日的日期是隨意編的, 請依實況自行修改輸入.
[attach]16706[/attach]
作者: Hsieh    時間: 2013-11-15 08:49

回復 1# hkyan

[attach]16708[/attach]
作者: hkyan    時間: 2013-11-18 16:32

我說的不夠清楚,應該以下如此類推:
日期                           職員                出勤時間
13/11/01 (Fri)        員工1
13/11/01 (Fri)        員工2
13/11/01 (Fri)        員工3
13/11/01 (Fri)        員工4
13/11/01 (Fri)        員工5
13/11/01 (Fri)        員工6
13/11/01 (Fri)        員工7
13/11/01 (Fri)        員工8
13/11/01 (Fri)        員工9
13/11/01 (Fri)        員工10
13/11/01 (Fri)        員工11
13/11/04 (Mon)    員工1
13/11/04 (Mon)    員工2
13/11/04 (Mon)    員工3
13/11/04 (Mon)    員工4
13/11/04 (Mon)    員工5
13/11/04 (Mon)    員工6
13/11/04 (Mon)    員工7
13/11/04 (Mon)    員工8
13/11/04 (Mon)     員工9
13/11/04 (Mon)    員工10
13/11/04 (Mon)    員工11
作者: luhpro    時間: 2013-11-18 23:14

我說的不夠清楚,應該以下如此類推:
日期                           職員                出勤時間
13/1 ...
hkyan 發表於 2013-11-18 16:32

那就再加一行做判斷囉.
以 3 # 為例做調整, 假設 :
A欄  日期       A1=日期  A2==INDIRECT(CONCATENATE("f",E2),1)  (以下拖曳複製)
B欄  上班員工   B1=職員  B2==INDIRECT(CONCATENATE("M",MOD(ROW(B2)-2,11)+2),1)  (以下拖曳複製)
C欄  C1=出勤時間
D欄  空一欄以與計算區做區隔
E欄  日期索引值 E1=1  E2==IF(B2=$M$2,E1+1,E1)  (以下拖曳複製) <= 加這一欄做每一輪日期異動的依據.
F欄  F1=實際上班日  F2==IF(ISERROR(VLOOKUP(ROW(A2),$H$2:$I$40,2,0)),"",VLOOKUP(ROW(A2),$H$2:$I$40,2,0))  (以下拖曳複製)
G欄  假日計算第1段 G1=1  G2==IF(G1>100,IF(J2<>"假日",G1-100+1,G1-100),IF(J2<>"假日",G1+1,G1+100))  (以下拖曳複製)
H欄  假日計算第2段 H1=1  H2==IF(G2<100,G2,"")  (以下拖曳複製)
I欄  所有日期  I1=2013/10/31(上班首日的前一日)   I2==I1+CHOOSE(WEEKDAY(I1+1,2),1,1,1,1,1,3,2)  (以下拖曳複製)
J欄  J1=假日註記  J2==IF(ISERROR(MATCH(F2,$I$2:$I$15,0)),"","假日") (以下拖曳複製)
K欄  空一欄以與資料區做區隔
L欄  假日日期列表放在 L2 及其之下的儲存格
M欄  員工姓名 放在 M2 ~ M12

則 A、B、C 欄就是你要的資料.

下方附檔中假日的日期是隨意編的, 請依實況自行修改輸入
[attach]16763[/attach]
作者: Hsieh    時間: 2013-11-19 10:04

回復 5# hkyan

B欄員工先輸入完成
A1輸入開始日期
A2=WORKDAY($A$1,COUNTIF($B$1:B2,B2)-1)
   [attach]16767[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)