Giúp em cách thống kê công

  • Thread starter Narga
  • Ngày gửi
N

Narga

Guest
12/6/08
1
0
1
HP
Em có một bảng thống kê công từng ngày như thế này:
K K K L L K K
và thống kê trong tháng người đó có bao nhiêu công K(khoán) và công L(thời gian), nếu như ai cũng làm bình thường thì không nói, nhưng khi có người làm ít hơn 1 công trong ngày thì phát sinh khác đi, chẳng hàn
làm 4h công khoán và 4h là ốm, khi đấy em sẽ ghi là 4x4K, như vậy tổng số công sẽ bị sai đi do nếu bình thường chỉ có 1 giá trị thì nó là 1 công nhưng khi có thêm 2, 3 giá trị điều kiện nữa thì em chịu, rối tung lên thậm chí còn có 4k3l1o (4h khoán, 3h thời gian, 1h chế độ), ai biết giúp em với
vd: K|K|4X4K|L|L|4K2L2O
 
Khóa học Quản trị dòng tiền
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
612
104
43
68
HCM city
Bạn thử xài tạm macro sau xem sao?!

Em có một bảng thống kê công từng ngày như thế này:
K K K L L K K
và thống kê trong tháng người đó có bao nhiêu công K(khoán) và công L(thời gian), nếu như ai cũng làm bình thường thì không nói, nhưng khi có người làm ít hơn 1 công trong ngày thì phát sinh khác đi, chẳng hàn
làm 4h công khoán và 4h là ốm, khi đấy em sẽ ghi là 4x4K, như vậy tổng số công sẽ bị sai đi do nếu bình thường chỉ có 1 giá trị thì nó là 1 công nhưng khi có thêm 2, 3 giá trị điều kiện nữa thì em chịu, rối tung lên thậm chí còn có 4k3l1o (4h khoán, 3h thời gian, 1h chế độ), ai biết giúp em với
vd: K|K|4X4K|L|L|4K2L2O
Chú ý khi sử dụng:

* Chưa chp phép chấm 10 giờ trở lên, VD 11K hay 10L, . . .

* Nếu thấy được, thì đề nghị, mình sẽ chuyển thành hàm người dùng cho bạn thuận tiện hơn (Sau khi đã chỉnh trang thật diêm dúa hơn, nếu cần)
Option Explicit
Sub TKCong()
Dim Rng As Range, Clls As Range
Dim lRw As Long, Zz As Long
Dim KhCh As Byte, KhLe As Byte, TGCh As Byte, TGLe As Byte

lRw = [b65500].End(xlUp).Row
Range("AI4:AJ" & lRw).ClearContents
For Zz = 4 To lRw
Set Rng = Cells(Zz, "D").Resize(, 31)
For Each Clls In Rng
Clls = UCase$(Clls)
If Len(Clls) = 1 Then
If Clls = "K" Then
KhCh = KhCh + 1
ElseIf Clls = "L" Then
TGCh = TGCh + 1
End If
ElseIf Len(Clls) > 1 Then
If InStr(1, Clls, "K") > 1 Then
KhLe = KhLe + CInt(Mid(Clls, InStr(1, Clls, "K") - 1, 1))
If KhLe >= 8 Then
KhCh = KhCh + 1: KhLe = KhLe Mod 8
End If
End If
If InStr(1, Clls, "L") > 1 Then
TGLe = TGLe + CInt(Mid(Clls, InStr(1, Clls, "L") - 1, 1))
If TGLe >= 8 Then
TGCh = TGCh + 1: TGLe = TGLe Mod 8
End If
End If
End If
Next Clls
Cells(Zz, "AI") = KhCh & " & " & KhLe & "h"
KhLe = 0: KhCh = 0
Cells(Zz, "AJ") = TGCh & " & " & TGLe & "h"
TGLe = 0: TGCh = 0
Next Zz
End Sub
 

Đính kèm

  • GPE.rar
    12.8 KB · Lượt xem: 110

Xem nhiều