Tổng hợp tự động bảng chấm công

Liên hệ QC

hoangmai2605

Thành viên chính thức
Tham gia
27/2/09
Bài viết
92
Được thích
11
- Xin chào diễn đàn,
- Mai xin nhờ các bạn rành về excel trong forum chỉ giúp làm sao để tổng hợp các bảng chấm công.
- Mai gởi kèm file excel gồm 2 sheet:
- Sheet chamcong: Mai đã thực hiện được việc chấm công đúng cho từng người trong 1 tổ. Trong ví dụ này Mai có 3 tổ.
- Sheet tonghop: Mai muốn các bạn chỉ cách làm để sao có được kết quả tự động như đã thể hiện.
- Rất mong sự chỉ dẫn của các bạn.
 

File đính kèm

  • tong hop cham cong.xls
    28 KB · Đọc: 439
- Xin chào diễn đàn,
- Mai xin nhờ các bạn rành về excel trong forum chỉ giúp làm sao để tổng hợp các bảng chấm công.
- Mai gởi kèm file excel gồm 2 sheet:
- Sheet chamcong: Mai đã thực hiện được việc chấm công đúng cho từng người trong 1 tổ. Trong ví dụ này Mai có 3 tổ.
- Sheet tonghop: Mai muốn các bạn chỉ cách làm để sao có được kết quả tự động như đã thể hiện.
- Rất mong sự chỉ dẫn của các bạn.

- Tại sheet chamcong: Cả 3 tổ thể hiện trên sheet này hay mỗi tổ 1 sheet? (Vì dữ liệu của bạn chỉ có 1 tổ)
- File của bạn chẳng có công thức gì hết nên không hiểu hết ý đồ của bạn. Tải file dạng thế này khó giúp thật đấy!!!
 
thấy có mỗi 1 tổ. bạn phải cho dữ liệu cả 3 tổ. mới giúp được chứ.
 
- Tại sheet chamcong: Cả 3 tổ thể hiện trên sheet này hay mỗi tổ 1 sheet? (Vì dữ liệu của bạn chỉ có 1 tổ)
- File của bạn chẳng có công thức gì hết nên không hiểu hết ý đồ của bạn. Tải file dạng thế này khó giúp thật đấy!!!
-Trên file của Mai là dữ liệu của 3 tổ mà bạn : Tổ coffa 1, coffa 2 và lao động.
- Thực hiện việc chấm công tất cả các tổ đều nằm trong sheet chamcong này bạn ạ.
- Dữ liệu chấm công của 1 tổ có thể trong 1 trang hay nhiều trang. Nhưng bắt buộc khi sang chấm công tổ khác thì bắt đầu tại 1 trang mới.
- Dữ liệu Mai post lên forum chỉ là giá trị thô. Việc tính toán để ra số giờ công, số ngày công, phụ cấp cơm đêm đã được thực hiện tự động rồi
- Bây giờ Mai muốn được sự chỉ dẫn để ra tự động các dữ liệu trong sheet tonghop đó bạn.
- Mai cám ơn Bạn đã xem và có ý giúp.
- Mong nhận được sự chỉ bảo.
 
Hàm tổng hợp các loại công của bạn đây

PHP:
Option Explicit
Function THCong(Rng As Range, Optional Loai As String = "NG") As Double
 Dim Clls As Range:                 Dim VTr As Byte
 Dim Cong As String
 
 Select Case Loai
 Case "N"
   For Each Clls In Rng
      VTr = InStr(Clls.Value, "x:")
      If VTr > 0 Then
         If Mid(Clls.Value, VTr + 2, 1) = 8 Then
            THCong = THCong + 1
         ElseIf Mid(Clls.Value, VTr + 2, 1) = 4 Then
            THCong = THCong + 0.5
         End If
      End If
   Next Clls
 Case "NG"
   For Each Clls In Rng
      VTr = InStr(Clls.Value, "l:") + InStr(Clls.Value, "t:")
      If VTr > 0 Then
      
         THCong = THCong + Mid(Clls.Value, VTr + 2)
      
      End If
   Next Clls
 End Select
 
End Function

Bạn kiểm tra hàm bằng cách sau:

(*) Tại [F14] thuộc trang 'BangChamCong' bạn nhập cú pháp sau:
=THCong(K9:Z9,"N")
(*) tương tự tại [H14] của bảng này ta nhập
=THCong(K9:Z9)
Sau đó chép xuống dưới thêm 2 dòng;
Tại [f16] ta có trị 6.5 & [h16] sẽ là 26.5 như bạn đã tính;

Những chú í khi sử dụng hàm
(+) Nếu trong ngày có 2 loại công thì công thêm giớ hay công lễ phải để cuối như x:8;t:4 hay x:4; l:4 , . . .
(+) Hàm chưa tính giờ công trong tháng; Nếu cần sẽ cập nhật sau;
Nhưng chưa rõ sau ngày 15 hàng tháng bạn sẽ chấm công chung 1 ô hay sao? (Có nghĩa bạn dự định chấm công ngày 1 & 16 chung 1 ô? - Việc này hàm chưa tính được công cho bạn đâu!) Hàm chỉ tính riêng các ngày trong tháng, mỗi ngày công 1 ô.

Chờ tin bạn!
 

File đính kèm

  • GPE.rar
    11.5 KB · Đọc: 259
Lần chỉnh sửa cuối:
(+) Nếu trong ngày có 2 loại công thì công thêm giớ hay công lễ phải để cuối như x:8;t:4 hay x:4; l:4 , . . .
(+) Hàm chưa tính giờ công trong tháng; Nếu cần sẽ cập nhật sau;
Nhưng chưa rõ sau ngày 15 hàng tháng bạn sẽ chấm công chung 1 ô hay sao? (Có nghĩa bạn dự định chấm công ngày 1 & 16 chung 1 ô? - Việc này hàm chưa tính được công cho bạn đâu!) Hàm chỉ tính riêng các ngày trong tháng, mỗi ngày công 1 ô.
Chờ tin bạn!

- Tui chấm công 1 tháng 2 lần bạn ạ. Trong ví dụ là dữ liệu từ 1-15 của tháng, và những ô tô màu hồng sen là chủ nhật, lễ.
- Đến kỳ lương tiếp theo thì sẽ copy thành file khác và chấm công cho 16-31.
- Đúng như bạn nói, khi chấm công thì phải chấm số giờ làm theo quy định hàng ngày trước rồi mới chấm tăng ca (nếu trong 1 ngày có 2 loại công). Như tui chấm 1 ngày thường, đi làm đủ 8g và tăng ca 3 giờ sẽ là x:8;t:3. Còn ngày chủ nhật, lễ có đi làm 6giờ thì chấm là l:6
- Tui đã tổng hợp tự động được những con số ở từng dòng tương ứng của cột ngày công, giờ công, ngoài giờ. Còn những con số ở dòng tổng cộng thì tui dùng SUM những dòng phía trên của bảng thôi.
- Ý Mai muốn là ở sheet tonghop ban đầu chỉ có phần tiêu đề thôi. Rồi lần theo các bảng chấm công mới sinh ra từng dòng gồm các dữ liệu :tên tổ, số người trong tổ, tổng số ngày công, giờ công, ngoài giờ của tổ. Có thể tận dụng các con số trong dòng tổng cộng cho tổng ngày công, giờ công, ngoài giờ.
- Bạn có cách nào quy định format của từng bảng chấm công, thêm vào dữ liệu qui định sao đó rồi tạo function để tự động sinh ra các dòng trong sheet tonghop đó bạn
- Mai rất cám ơn bạn và mong nhận được sự chỉ bảo.
 
- Tui đã tổng hợp tự động được những con số ở từng dòng tương ứng của cột ngày công, giờ công, ngoài giờ. Còn những con số ở dòng tổng cộng thì tui dùng SUM những dòng phía trên của bảng thôi.

Bạn tổng hợp tự động bằng cách nào vậy? Mình mong bạn kiểm thử hàm =THCong() của mình xem có khác gì cách bạn tổng hợp không?
- Muốn là ở sheet tonghop ban đầu chỉ có phần tiêu đề thôi. Rồi lần theo các bảng chấm công mới sinh ra từng dòng gồm các dữ liệu :tên tổ, số người trong tổ, tổng số ngày công, giờ công, ngoài giờ của tổ. Có thể tận dụng các con số trong dòng tổng cộng cho tổng ngày công, giờ công, ngoài giờ.
- Bạn có cách nào quy định format của từng bảng chấm công, thêm vào dữ liệu qui định sao đó rồi tạo function để tự động sinh ra các dòng trong sheet tonghop đó bạn

Cách đơn giản nhất, như mình đã làm trong file đính kèm, đó là:

Tùy thuộc vô số người trong tổ đông nhất, mà ta ấn định bảng chấm công của tổ ấy trong những vùng cách đều nhau, VD:
Sỉ số của 3 tổ tương ứng là 12, 15, 9

Bảng chấm công của tổ A từ A2: BA30, trong đó dòng tổng hợp công của tổ này tại F30-J30
Bảng của tổ B sẽ từ A32- BA60, trong đó dòng tổng hợp công sẽ tại F60-J60
Đối với các tổ khác cũng tương ứng;

Có vậy bên bảng tính tổng hợp, bạn chỉ cái sẵn công thức để tham chiếu đến thôi (Trong file đính kèm mình đã cài thử vài thông số rồi đó - bạn xem thử; & Bạn tiếp tục cài đến khi nào bí thì hỏi tiếp nha! Nhưng cũng rất mong là bạn sẽ không bí 1 công thức nào.)

Chú ý: Để bảng chấm công đẹp & dễ quan sát cũng như kiểm tra, ta cho ẩn các dòng đang chưa cần đi
--=0
 
Lần chỉnh sửa cuối:
Một bài toán không khó, nhưng vấn đề .... là 3 tổ bạn cùng làm chung 1 sheet nên hơi khó thực hiện. nếu muốn thực hiện được chỉ cách link bảng chấm công sang tổng hợp thôi. Theo mình bạn nên tách mỗi tổ 1 sheet mình nghĩ sẽ dễ hơn trong việc xử lý bảng tổng hợp của bạn.
Thân!
 
+-+-+-+Một bài toán không khó, nhưng vấn đề .... là 3 tổ bạn cùng làm chung 1 sheet nên hơi khó thực hiện. nếu muốn thực hiện được chỉ cách link bảng chấm công sang tổng hợp thôi. Theo mình bạn nên tách mỗi tổ 1 sheet mình nghĩ sẽ dễ hơn trong việc xử lý bảng tổng hợp của bạn.
Thân!
- Theo như gợi ý của bạn tách từng sheet là 1 bảng chấm công cho 1 tổ, Mai đã suy nghĩ và làm được cho việc tổng hợp dữ liệu trong sheet tonghop rồi bạn. Cám ơn bạn đã gợi ý.
- Nhân đây Mai xin post lại ví dụ mà Mai đã xử lý được tự động cho sheet tonghop để các bạn tham khảo.
- Nút Tổng hợp dữ liệu : sẽ lấy dữ liệu cần thiết của tất cả sheet bảng chấm công và điền vào dòng tương ứng của sheet tonghop.
- Nút xóa dữ liệu hiện tại : làm thêm cho vui để xóa hết dữ liệu chỉ để lại tiêu đề sheet tonghop thôi.
- Thân chào các bạn.
 

File đính kèm

  • tong hop cham cong.xls
    49.5 KB · Đọc: 119
Đây là cách viết khác của cái macro của bạn. (Tham khảo cho vui!)

PHP:
Option Explicit
Public Sub Tinhtonghop()
 Dim Sh As Worksheet
 Dim Stt As Byte
 Const Rw6 As Byte = 6
    
    Sheets("Tonghop").Select
    Application.Volatile
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "tonghop" Then
            
            Stt = Stt + 1
            Cells(Rw6 + Stt, "A").Value = Stt
            Cells(Rw6 + Stt, "B").Value = Sh.Cells(5, "D").Value
            Cells(Rw6 + Stt, "C").Value = Sh.Cells(6, "A").Value
            Cells(Rw6 + Stt, "D").Value = Sh.Cells(6, "F").Value
            
            Cells(Rw6 + Stt, "E").Resize(, 2).Value = Sh.Cells(6, "G").Resize(, 2)
                        
        End If
    Next Sh
    Set Sh = Nothing
End Sub
 
PHP:
Option Explicit
Public Sub Tinhtonghop()
 Dim Sh As Worksheet
 Dim Stt As Byte
 Const Rw6 As Byte = 6

-Mai nhờ bạn viết thêm vào marcro của Mai hay của bạn để các dòng đuợc tạo tự động trong sheet tonghop được kẻ dòng, kẻ cột đàng hoàng như tiêu đề bên trên với.
- Bạn viết thêm code để sinh ra dòng tổng cộng sau cùng để thể hiện sum của số người, ngày công, giờ công các dòng dữ liệu bên trên nhé.
- Cám ơn bạn và mong nhận được hồi âm để học hỏi thêm.

PS: Đã có lần được học hỏi bạn ở 1 chủ đề khác và biết bạn viết macro excel cừ lắm. Mai mới mua được cuốn sách lập trình excel mà forum giới thiệu đó. Đang tập viết macro từ từ.
 
Macro định dạng trang báo cáo của bạn đây

-Nhờ bạn viết thêm vào marcro để định dạng các dòng đuợc tạo thêm cho đàng hoàng như tiêu đề bên trên với.

- Bạn viết thêm code để sinh ra dòng tổng cộng sau cùng để thể hiện sum của số người, ngày công, giờ công các dòng dữ liệu bên trên nhé.

Mìhh mới mua được cuốn sách lập trình excel mà forum giới thiệu đó. Đang tập viết macro từ từ.
Có hai cách sử dụng macro này:

(1) Từ 1 macro mà bạn thích, thêm vô cuối dòng lệnh gọi macro này, như kiểu này

Mã:
' . . . . . . '
 FormatReportCells
[B]End Sub[/B]

(2) Chép có lựa lọc các dòng lệnh này lên trên của dòng End Sub. Nói là có lựa lọc vì tránh xài biến trùng lắp, hao phí tài nguyên mà thôi! :-=


PHP:
Option Explicit
Sub FormatReportCells()
 Dim eR As Long, Rng As Range
 
 Sheets("TongHop").Select
 eR = [c65500].End(xlUp).Row + 1
 Set Rng = Cells(eR, "C"):          eR = eR - 7
1 ' Nhap Cong Thuc Tinh Tong Tai Dong Cuoi Cot "C"'
    Rng.Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-" & eR & "]C:R[-1]C)"
2 ' Chep Cong Thuc Sang Cac O Ben Phai Cung Dong'
    Selection.AutoFill Destination:=Rng.Resize(, 4), Type:=xlFillDefault
3 ' Dinh Dang Chu Dam & Canh Giua'
    Rng.Resize(, 4).Select
    Selection.Font.Bold = True
    With Selection
        .HorizontalAlignment = xlCenter
    End With
4 ' Ke Khung Cua Bang Du Lieu'
    Range("A7").Resize(1 + eR, 7).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous:             .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous:             .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous:             .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous:             .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous:             .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous:             .Weight = xlThin
    End With
End Sub

Chúc vui!
 
Tổng hợp dữ liệu trong bảng chấm công

- Nhờ bạn ChanhTQ@ và các bạn trong forum giúp Tôi tiếp về tổng hợp dữ liệu chấm công.
- Tôi đã giải thích cách nhập dữ liệu chấm công và những dữ liệu Tôi cần tổng hợp tự động trong file excel đính kèm rất cụ thể rõ ràng.
- Mong các bạn giúp đỡ chỉ Tôi cách làm.
- Chân thành cảm ơn và mong sớm nhận được sự chỉ dẫn
 

File đính kèm

  • chamcongexample.rar
    200.6 KB · Đọc: 160
Em có file excel này muốn lấy dữ liệu từ bên sheet chi tiết lướng sang bên tổng hợp lương, ANh Chị giúp em với ạ, Em cảm ơn Anh Chị
 

File đính kèm

  • 2019.xlsx
    102.4 KB · Đọc: 22
Web KT
Back
Top Bottom