Lọc danh sách thanh toán lương bằng tiền mặt và tài khoản ngân hàng (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Nancy Nguyen Mai

Thành viên mới
Tham gia
5/6/18
Bài viết
31
Được thích
1
Em chào cả nhà ạ, hiện tại em đang làm bảng lương nhưng do nhân viên gần 200 người nên việc lọc danh sách thoan toán hàng tháng mất nhiều thời gian ạ

Anh/chị/em/bạn bè hỗ trợ giúp em lập công thức cho sheet thanh toán lương bằng tiền mặt và sheet thanh toán bằng TKNH với ạ

Mục đích của e là lập sẵn công thức cho sheet cuối tháng khi e cập nhật bảng lương xong thì sheet thanh toán tự động lấy dữ liệu sang luôn ạ

Em xin cảm ơn và hậu tạ
 

File đính kèm

Cách củ chuối nhất là filter rồi copy mã nhân viên paste qua , mất khoản vài giây .
 
Em chào cả nhà ạ, hiện tại em đang làm bảng lương nhưng do nhân viên gần 200 người nên việc lọc danh sách thoan toán hàng tháng mất nhiều thời gian ạ

Anh/chị/em/bạn bè hỗ trợ giúp em lập công thức cho sheet thanh toán lương bằng tiền mặt và sheet thanh toán bằng TKNH với ạ

Mục đích của e là lập sẵn công thức cho sheet cuối tháng khi e cập nhật bảng lương xong thì sheet thanh toán tự động lấy dữ liệu sang luôn ạ

Em xin cảm ơn và hậu tạ
Chào bạn,

Trong file sử dụng 2 cột phụ AQ,và AR. Bạn có thể ẩn nó.

Xem file đính kèm.
 

File đính kèm

Em chào cả nhà ạ, hiện tại em đang làm bảng lương nhưng do nhân viên gần 200 người nên việc lọc danh sách thoan toán hàng tháng mất nhiều thời gian ạ

Anh/chị/em/bạn bè hỗ trợ giúp em lập công thức cho sheet thanh toán lương bằng tiền mặt và sheet thanh toán bằng TKNH với ạ

Mục đích của e là lập sẵn công thức cho sheet cuối tháng khi e cập nhật bảng lương xong thì sheet thanh toán tự động lấy dữ liệu sang luôn ạ

Em xin cảm ơn và hậu tạ
Hậu tạ nghe! Mới làm code dán kết quả sang 2 sheet, sẽ làm tiếp. Bấm nút Chạy DS để thi hành.
PHP:
Sub TachDSLuong()
Dim arrTmp, arrTM, arrCK
Dim i As Long, dTM As Long, dCK As Long

Sheet2.Range("A6:F1000").ClearContents
Sheet3.Range("A6:I1000").ClearContents
arrTmp = Sheet1.Range("B10:AP" & Sheet1.Range("B" & Rows.Count).End(xlUp).Row).Value

ReDim arrTM(1 To UBound(arrTmp), 1 To 4)
ReDim arrCK(1 To UBound(arrTmp), 1 To 7)

For i = 1 To UBound(arrTmp)
    If arrTmp(i, 36) = "TM" Then
        dTM = dTM + 1
        arrTM(dTM, 1) = Right("0" & dTM, 2)
        arrTM(dTM, 2) = arrTmp(i, 1)
        arrTM(dTM, 3) = arrTmp(i, 2)
        arrTM(dTM, 4) = arrTmp(i, 35)
    Else
        dCK = dCK + 1
        arrCK(dCK, 1) = Right("0" & dCK, 2)
        arrCK(dCK, 2) = arrTmp(i, 1)
        arrCK(dCK, 3) = arrTmp(i, 2)
        arrCK(dCK, 4) = arrTmp(i, 4)
        arrCK(dCK, 5) = arrTmp(i, 37)
        arrCK(dCK, 6) = arrTmp(i, 38)
        arrCK(dCK, 7) = arrTmp(i, 35)
    End If
Next

If dTM > 0 Then
    Sheet2.Range("A6").Resize(dTM, 4).Value = arrTM
End If
If dCK > 0 Then
    Sheet3.Range("A6").Resize(dCK, 7).Value = arrCK
End If

End Sub
 

File đính kèm

Danh sách gần 200 người( bài #1), Right("0" & dTM, 2) tối đa chỉ có 99.

arrTM(dTM, 1) = Format(dTM, "00")
 
Lần chỉnh sửa cuối:
Danh sách gần 200 người( bài #1), Right("0" & dTM, 2) tối đa chỉ có 99.

arrTM(dTM, 1) = Format(dTM, "00")
Hehe, tks bạn. Nhiều lúc code mà lơ đễnh vậy đó. Nhưng nếu code mà không có chạy thử không phát hiện lỗi được.
 
Em chào cả nhà ạ, hiện tại em đang làm bảng lương nhưng do nhân viên gần 200 người nên việc lọc danh sách thoan toán hàng tháng mất nhiều thời gian ạ

Anh/chị/em/bạn bè hỗ trợ giúp em lập công thức cho sheet thanh toán lương bằng tiền mặt và sheet thanh toán bằng TKNH với ạ

Mục đích của e là lập sẵn công thức cho sheet cuối tháng khi e cập nhật bảng lương xong thì sheet thanh toán tự động lấy dữ liệu sang luôn ạ

Em xin cảm ơn và hậu tạ
Gửi bạn thêm cách dùng ADO nhé.

Mã:
Sub TachDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No""")
        Sheet2.Range("B6:F100").ClearContents
        Sheet3.Range("B6:I100").ClearContents
        Sheet2.Range("B6").CopyFromRecordset .Execute("Select F2,F3,F34 from [" & Sheet1.Name & "$A10:AP100]  where [F5] like '" & Sheet2.Range("G2") & "' and F37 like '" & Sheet2.Range("G3") & "'")
        Sheet3.Range("B6").CopyFromRecordset .Execute("Select F2,F3,F5,F38,F39,F34 from [" & Sheet1.Name & "$A10:AP100]  where  F37 like '" & Sheet3.Range("J3") & "'")
    End With

End Sub
 
Chào bạn,

Trong file sử dụng 2 cột phụ AQ,và AR. Bạn có thể ẩn nó.

Xem file đính kèm.
Cảm ơn bạn nhiều
Bài đã được tự động gộp:

Chào bạn,

Trong file sử dụng 2 cột phụ AQ,và AR. Bạn có thể ẩn nó.

Xem file đính kèm.
Cảm ơn bạn nhiều
Bài đã được tự động gộp:

Gửi bạn thêm cách dùng ADO nhé.

Mã:
Sub TachDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No""")
        Sheet2.Range("B6:F100").ClearContents
        Sheet3.Range("B6:I100").ClearContents
        Sheet2.Range("B6").CopyFromRecordset .Execute("Select F2,F3,F34 from [" & Sheet1.Name & "$A10:AP100]  where [F5] like '" & Sheet2.Range("G2") & "' and F37 like '" & Sheet2.Range("G3") & "'")
        Sheet3.Range("B6").CopyFromRecordset .Execute("Select F2,F3,F5,F38,F39,F34 from [" & Sheet1.Name & "$A10:AP100]  where  F37 like '" & Sheet3.Range("J3") & "'")
    End With

End Sub
Cảm ơn bạn nhiều
Bài đã được tự động gộp:

Hậu tạ nghe! Mới làm code dán kết quả sang 2 sheet, sẽ làm tiếp. Bấm nút Chạy DS để thi hành.
PHP:
Sub TachDSLuong()
Dim arrTmp, arrTM, arrCK
Dim i As Long, dTM As Long, dCK As Long

Sheet2.Range("A6:F1000").ClearContents
Sheet3.Range("A6:I1000").ClearContents
arrTmp = Sheet1.Range("B10:AP" & Sheet1.Range("B" & Rows.Count).End(xlUp).Row).Value

ReDim arrTM(1 To UBound(arrTmp), 1 To 4)
ReDim arrCK(1 To UBound(arrTmp), 1 To 7)

For i = 1 To UBound(arrTmp)
    If arrTmp(i, 36) = "TM" Then
        dTM = dTM + 1
        arrTM(dTM, 1) = Right("0" & dTM, 2)
        arrTM(dTM, 2) = arrTmp(i, 1)
        arrTM(dTM, 3) = arrTmp(i, 2)
        arrTM(dTM, 4) = arrTmp(i, 35)
    Else
        dCK = dCK + 1
        arrCK(dCK, 1) = Right("0" & dCK, 2)
        arrCK(dCK, 2) = arrTmp(i, 1)
        arrCK(dCK, 3) = arrTmp(i, 2)
        arrCK(dCK, 4) = arrTmp(i, 4)
        arrCK(dCK, 5) = arrTmp(i, 37)
        arrCK(dCK, 6) = arrTmp(i, 38)
        arrCK(dCK, 7) = arrTmp(i, 35)
    End If
Next

If dTM > 0 Then
    Sheet2.Range("A6").Resize(dTM, 4).Value = arrTM
End If
If dCK > 0 Then
    Sheet3.Range("A6").Resize(dCK, 7).Value = arrCK
End If

End Sub
Thanks bạn nhiều
 
Web KT

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

Back
Top Bottom