標題:
加班費計算
[打印本頁]
作者:
mmggmm
時間:
2012-5-5 11:33
標題:
加班費計算
各位:
本人想請教有關加班費月結和年結的計算.(執行巨集)
月結更改年和月就可擷取Sheet"Main"資料.[attach]10817[/attach]
作者:
Hsieh
時間:
2012-5-5 16:41
回復
1#
mmggmm
Private Sub Worksheet_Change(ByVal Target As Range) '月結
If Intersect(Target, Union([A1], [C1])) Is Nothing Then Exit Sub
Set d = CreateObject("Scripting.Dictionary")
MyDay = [A1] & [C1]
With Sheets("Main")
For Each a In .Range(.[A2], .[A2].End(xlDown))
If Format(a, "yyyym") = MyDay Then
If IsEmpty(d(a.Offset(, 1).Value)) Then
d(a.Offset(, 1).Value) = Array(a.Offset(, 1).Value, a.Offset(, 2).Value, a.Offset(, 3).Value, a.Offset(, 4).Value)
Else
ar = d(a.Offset(, 1).Value)
ar(2) = ar(2) + a.Offset(, 3): ar(3) = ar(3) + a.Offset(, 4)
d(a.Offset(, 1).Value) = ar
Erase ar
End If
End If
Next
Me.Range("A1").CurrentRegion.Offset(3).ClearContents
If d.Count > 0 Then Me.[A3].Resize(d.Count, 4) = Application.Transpose(Application.Transpose(d.items))
End With
End Sub
複製代碼
Private Sub Worksheet_Change(ByVal Target As Range) '年結
If Intersect(Target, [A1]) Is Nothing Then Exit Sub
Set d = CreateObject("Scripting.Dictionary")
MyYear = [A1]
With Sheets("Main")
For Each a In .Range(.[A2], .[A2].End(xlDown))
If Year(a) = MyYear Then
If IsEmpty(d(a.Offset(, 1).Value)) Then
d(a.Offset(, 1).Value) = Array(a.Offset(, 1).Value, a.Offset(, 2).Value, a.Offset(, 3).Value, a.Offset(, 4).Value)
Else
ar = d(a.Offset(, 1).Value)
ar(2) = ar(2) + a.Offset(, 3): ar(3) = ar(3) + a.Offset(, 4)
d(a.Offset(, 1).Value) = ar
Erase ar
End If
End If
Next
Me.Range("A1").CurrentRegion.Offset(3).ClearContents
If d.Count > 0 Then Me.[A3].Resize(d.Count, 4) = Application.Transpose(Application.Transpose(d.items))
End With
End Sub
複製代碼
作者:
mmggmm
時間:
2012-5-5 17:34
H大大,好了不起,這就是我要的,不過我要慢慢消化,謝謝.
作者:
freeffly
時間:
2012-5-8 17:01
回復
2#
Hsieh
好簡潔的方法
如果是我應該會用
1.進階篩選的方式找出NO 跟姓名
2.然後在用函數去加總加班時數跟金額
速度上可能就比版主的速度再慢一點
作者:
mmggmm
時間:
2012-5-10 20:26
H大大:
程式試用後發現一個問題,例如"月結"擷取資料後,再揀選叧一個月而該月份其實沒有資料可取,但程式並未將所有資料刪除還保留第一筆資料."年結"同有這問題.何解,請幫助解決,謝謝.
作者:
Hsieh
時間:
2012-5-10 22:20
回復
5#
mmggmm
這行Offset(3)錯誤
改成
Me.Range("A1").CurrentRegion.Offset(2).ClearContents
作者:
mmggmm
時間:
2012-5-10 23:00
多謝賜教,多謝.
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)