tự động tách danh sách học viên nghỉ học sau khi điểm danh

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Ngọc Thanh 789

Thành viên mới
Tham gia
14/3/23
Bài viết
1
Được thích
0
mình hay phải điểm danh đầu buổi sau đó mất rất nhiều thời gian phải thông kê lại .Mình có 1file điểm danh hàng tháng, bây giờ mình muốn khi nào tích chữ V hoặc XP hoặc 1/2 vào sheet danh sách chính thức thì ở sheet tháng 4 tự động cập nhật vào theo từng mục kết cấu như ở sheet tháng 4, và tính tổng được số người vắng. cảm ơn các Bro
 

File đính kèm

mình hay phải điểm danh đầu buổi sau đó mất rất nhiều thời gian phải thông kê lại .Mình có 1file điểm danh hàng tháng, bây giờ mình muốn khi nào tích chữ V hoặc XP hoặc 1/2 vào sheet danh sách chính thức thì ở sheet tháng 4 tự động cập nhật vào theo từng mục kết cấu như ở sheet tháng 4, và tính tổng được số người vắng. cảm ơn các Bro
Dân lam kinh mà sao lòng vòng dữ vậy?
Mô tả cụ thể thêm và có kết quả minh hoạ thủ công xem phố đầm giúp gì được không?
 
Để đỡ tốn thời gian thống kê, bạn nên thiết kế lại các trang tính, ví dụ
:
(1) Tên các trang tính không là tiếng Việt có dâu
(2) Trang 'DSCT' ta không nên trộn ô (ở cột 'D' của file; Vấn đề là tiện trong thống kê hơn là sự đẹp đẽ, bắt mắt.
(3) Ờ 2 trang tính liền kề với nó: Giữa 2 cột [Họ & Tên] & [Đơn vị] ta nên thêm cột để chỉ định khối cho các nhân vật; & tất nhiên cũng đừng trộn ô theo cột như ở trang tính trước chúng.
(4) Trang tính cuối cùng ta cũng nên thêm 3 cột để ghi nhận các hành vi vắng hay có mặt của các nhân sự;
Bạn thử đi . . . & mình tin chắc chuyện thống kê bạn sẽ tự ên được tấp lự ngay đó mà!
 
Mò đại, khả năng sai là rất cao.
Mã:
=CHOOSE(MATCH(1;N(VLOOKUP(B10;'ds chính thức'!B:H;7;0)={"V";"XP";"1/2"});0);"Vắng hẳn, chơi cả tháng";"Vắng có van xin phép";"Nghỉ nửa tháng túc tắc")
 
mình hay phải điểm danh đầu buổi sau đó mất rất nhiều thời gian phải thông kê lại .Mình có 1file điểm danh hàng tháng, bây giờ mình muốn khi nào tích chữ V hoặc XP hoặc 1/2 vào sheet danh sách chính thức thì ở sheet tháng 4 tự động cập nhật vào theo từng mục kết cấu như ở sheet tháng 4, và tính tổng được số người vắng. cảm ơn các Bro
Bạn ấn nút Lọc và kiểm tra kết quả nha!
Tôi có sửa lại một chút định dạng (tên sheets, bỏ Merge) trong file.
Sẵn tiện cho mình hỏi thăm 2 đồng chí Nguyễn Văn Tú và đồng chí Nguyễn Duy Đào ở Xuân Thiên nha!
Mã:
Option Explicit
Sub GPE()
    Dim Arr(), Res(), i&, j&, k&, Lr&, m%, n%, Ws As Worksheet
    Dim V%, XP%, Hnc%, Vm$, Res1(), Res2(), t%
    Dim td1$, td2$, td3$, Rng As Range, sRng As Range
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For Each Ws In Worksheets
        If InStr(Ws.Name, "T") > 0 Then Ws.Delete
    Next Ws
    On Error Resume Next
    Set Rng = Sheets("SAMPLE").Range("A8:E8")
    Set sRng = Sheets("SAMPLE").Range("A1:D6")
    td2 = "II. Danh s當h nh" & ChrW(7919) & "ng " & ChrW(273) & ChrW(7891) & "ng ch・v" & ChrW(7855) & "ng c・l do"
    td1 = "I. Danh s當h nh" & ChrW(7919) & "ng " & ChrW(273) & ChrW(7891) & "ng ch・v" & ChrW(7855) & "ng khg c・l do"
    td3 = "III. Danh s當h nh" & ChrW(7919) & "ng " & ChrW(273) & ChrW(7891) & "ng ch・xin v" & ChrW(7855) & "ng m" & ChrW(7863) & _
            "t 1/2 bu" & ChrW(7893) & "i"
    With Sheets("NGUON")
        Lr = .Range("B" & Rows.Count).End(xlUp).Row
        Arr = .Range("A6:P" & Lr).Value
        ReDim Res(1 To UBound(Arr) + 3, 1 To 4)
        ReDim Res1(1 To UBound(Arr) + 3, 1 To 4)
        ReDim Res2(1 To UBound(Arr) + 3, 1 To 4)
        For j = 5 To UBound(Arr, 2)
            For i = 2 To UBound(Arr, 1)
                If UCase(Arr(i, j)) = "V" Then
                    V = V + 1: k = k + 1
                    Res(k, 1) = k: Res(k, 2) = Arr(i, 2)
                    Res(k, 3) = Arr(i, 4)
                ElseIf UCase(Arr(i, j)) = "1/2" Then
                    m = m + 1: Hnc = Hnc + 1
                    Res1(m, 1) = m: Res1(m, 2) = Arr(i, 2)
                    Res1(m, 3) = Arr(i, 4)
                ElseIf UCase(Arr(i, j)) = "XP" Then
                    n = n + 1: XP = XP + 1
                    Res2(n, 1) = n: Res2(n, 2) = Arr(i, 2)
                    Res2(n, 3) = Arr(i, 4)
                End If
            Next i
            If Application.Max(k, m, n) > 0 Then
                Worksheets.Add after:=Sheets(Sheets.Count)
                ActiveSheet.Name = "T" & Split(Arr(1, j), " ")(1)
                sRng.Copy Range("A1")
                Range("A7").Value = td1 & " " & V & " " & ChrW(273) & ChrW(7891) & "ng ch・
                Rng.Copy Range("A8"): Range("A7:D8").Font.Bold = True
                Range("A9").Resize(k, 4).Value = Res
                Range("A" & 9 + V).Value = td2 & " " & XP & " " & ChrW(273) & ChrW(7891) & "ng ch・
                Rng.Copy Range("A" & 10 + V)
                Range("A" & 9 + V).Font.Bold = True
                Range("A" & 11 + V).Resize(n, 4).Value = Res2
                Range("A" & 11 + V + XP).Value = td3 & " " & Hnc & " " & ChrW(273) & ChrW(7891) & "ng ch・
                Range("A" & 11 + V + XP).Font.Bold = True
                Rng.Copy Range("A" & 12 + V + XP)
                Range("A" & 13 + V + XP).Resize(m, 4).Value = Res1
                Columns("A:A").ColumnWidth = 5: Columns("B:B").ColumnWidth = 25
                Columns("C:C").ColumnWidth = 25: Columns("D:D").ColumnWidth = 40
                Dim sLr&
                sLr = Range("A" & Rows.Count).End(xlUp).Row
                Range("A7:D" & sLr).Borders.LineStyle = 1
                Range("B" & sLr + 2) = "T" & ChrW(7893) & "ng c" & ChrW(7897) & _
                "ng I+II+III: " & k + m + n & " " & ChrW(273) & ChrW(7891) & "ng ch・
                Range("B" & sLr + 2).Font.Bold = True: Range("B" & sLr + 2).Font.Size = 13
            End If
            k = 0: m = 0: n = 0: V = 0: XP = 0: Hnc = 0
        Next j
    End With
    MsgBox "Done"
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub
 

File đính kèm

Web KT

Bài viết mới nhất

Back
Top Bottom