Board logo

標題: 出勤事由標示及統計 [打印本頁]

作者: shan0948    時間: 2020-12-17 22:02     標題: 出勤事由標示及統計

請問先進,小弟有一統計表,統計每人每月出勤狀況,試過多個公式仍有困難,尤其一人有多個事由時,詳如附檔內說明,煩請先進指教,謝謝![attach]32827[/attach]
作者: 准提部林    時間: 2020-12-18 16:38

D4:
=LOOKUP("z",IF({1,0},"",LOOKUP(1,0/($C4=$AN$1:$AN$14)/(D$3>=$AO$1:$AO$14)/(D$3<=$AQ$1:$AQ$14),$AS:$AS)))

AI4:
=COUNTIF(D4:AH4,"><")
作者: shan0948    時間: 2020-12-19 08:58

回復 2# 准提部林


    准大好,公式經測試果然成功好用,尤其是 D4 的公式要研究看看以後的應用,謝謝准大了!
作者: Andy2483    時間: 2023-12-4 13:24

謝謝論壇,謝謝各位前輩
後學藉此帖練習陣列與字典,學習方案如下,請各位前輩指教
執行前:
[attach]37102[/attach]

執行結果:
[attach]37103[/attach]


Option Explicit
Sub TEST()
Dim Arr, Brr, Crr, Z, i&, j%, R
'↑宣告變數
Set Z = CreateObject("Scripting.Dictionary")
'↑令Z變數是 字典
R = Application.Match("小計", [A:A], 0)
'↑令R變數是 表格函數Match()的回傳值
If IsError(R) Then Exit Sub Else R = R - 1
'↑如果R變數是錯誤值? True就結束程式執行,否則令R-1
Brr = Range([AS5], [AN65536].End(3))
'↑令Brr變數是 盛裝資料格值的二維陣列
Crr = Range([A1], Cells(R, "AH"))
'↑令Crr變數是 盛裝整個結果格值的二維陣列
ReDim Arr(4 To R, 4 To UBound(Crr, 2))
'↑令Arr變數是結果目標格範圍的空陣列
For i = 4 To R
'↑設順迴圈!i從4到 R變數
   If Trim(Crr(i, 3)) <> "" Then Z(Trim(Crr(i, 3))) = i
   '↑如果i迴圈列/姓名欄Crr陣列值不是空的?
   'True就令姓名為key,item是列號納入Z字典中

Next
For i = 1 To UBound(Brr)
'↑設順迴圈!i從1到 Brr陣列縱向最大索引號列(迴圈跑資料陣列)
   If Z(Trim(Brr(i, 1)) & "") = 0 Then GoTo i02
   '↑如果資料陣列i迴圈列/姓名欄是空的就 跳到標示i02位置繼續執行
   For j = Val(Brr(i, 2)) + 3 To Val(Brr(i, 4)) + 3
      Arr(Z(Trim(Brr(i, 1)) & ""), j) = Brr(i, 6)
   Next
   '↑設順迴圈將代碼填入結果目標陣列中
i02: Next
[D4].Resize(UBound(Arr) - 3, UBound(Arr, 2) - 3) = Arr
'↑令結果目標格填入Arr陣列值
End Sub




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