Giúp mình cách gộp cách sheet 1,2,3,4 để tìm tổng tiền cho Nhân viên trong sheetNV

Liên hệ QC

lybitas

Thành viên mới
Tham gia
28/6/17
Bài viết
2
Được thích
0
Mình có các thông tin như trong đính kèm. Bên mình làm may, mỗi tháng có khoảng 400 lô hàng mình tính làm 400 sheet chi tiết để kiểm tra. Sau khi làm xong 400 sheet đó. Mình muốn có 1 bảng tổng hợp như bảng mã nhân viên để tính tổng tiền lương SP. Các cao thủ giúp mình đc ko?
 

File đính kèm

  • Cong Doan sp.xlsx
    333.6 KB · Đọc: 70
hóng cách làm với
 
Mình có các thông tin như trong đính kèm. Bên mình làm may, mỗi tháng có khoảng 400 lô hàng mình tính làm 400 sheet chi tiết để kiểm tra. Sau khi làm xong 400 sheet đó. Mình muốn có 1 bảng tổng hợp như bảng mã nhân viên để tính tổng tiền lương SP. Các cao thủ giúp mình đc ko?
Làm được là điều đương nhiên, nhưng với cấu trúc như trong file thì VBA hay Pivot table cũng đuối.
400 sheets x(30*42)=504000 dòng.
đặc biệt merge và cấu trúc dữ liêu không theo quy tắc nào. tính giúp bạn nhưng mất nhiều thời gian quá.
 
Mình có các thông tin như trong đính kèm. Bên mình làm may, mỗi tháng có khoảng 400 lô hàng mình tính làm 400 sheet chi tiết để kiểm tra. Sau khi làm xong 400 sheet đó. Mình muốn có 1 bảng tổng hợp như bảng mã nhân viên để tính tổng tiền lương SP. Các cao thủ giúp mình đc ko?
Chạy thử code
Mã:
Sub TongLuong()
Dim Dic As Object, Darr(), Arr(), ShName As String, i As Long, j As Integer
Arr = Sheet3.Range("A2", Sheet3.Range("A65500").End(xlUp)).Value
Set Dic = CreateObject("scripting.dictionary")
For i = 1 To UBound(Arr)
  Dic.Item(Arr(i, 1)) = i
Next i
ReDim Arr(1 To UBound(Arr), 1 To 1)
For s = 1 To Sheets.Count
  If Sheets(s).Range("A4").Value = "STT" Then
    i = Sheets(s).Range("D65500").End(xlUp).Row
    j = Sheets(s).Range("AAA4").End(xlToLeft).Column
    Darr = Sheets(s).Range("D5", Sheets(s).Cells(i, j)).Value
    For i = 1 To UBound(Darr) - 4
      For j = 1 To UBound(Darr, 2) Step 5
        Key = Darr(i, j)
        If Key <> "" Then
          If Dic.exists(Key) Then Arr(Dic.Item(Key), 1) = Arr(Dic.Item(Key), 1) + Darr(i, j + 4)
        End If
      Next j
    Next i
  End If
Next s
Sheet3.Range("C2").Resize(UBound(Arr)) = Arr
End Sub
 

File đính kèm

  • Cong Doan sp.xlsb
    256 KB · Đọc: 35
Làm được, nhưng với cấu trúc như trong file thì VBA hay Pivot table cũng đuối.
. . . đặc biệt merge và cấu trúc dữ liêu không theo quy tắc nào. tính giúp bạn nhưng mất nhiều thời gian quá.

Vậy cùng ngành thì LD Thương tìm cách tái cấu trúc CSDL lại dùm mọi người đi thôi!
Xin cảm ơn trước.
 
Mấy cái cao siêu mình ko hiểu j.
 
@bạn lybitas. Mình ko hiểu rõ công việc hiện tại nên hok tư vấn sắp xếp dữ liệu lại được. Theo mình nếu bạn giữ file nhập liệu như này, bạn thêm vào 1 sheet tổng hợp nữa. Khi tạo thêm 1 sheet cho 1 lô hàng, có đủ số liệu, bạn copy dữ liệu sang sheet tổng hợp. Bài toán trở nên đơn giản hơn nhiều.
 

File đính kèm

  • Cong Doan sp.xlsx
    354.7 KB · Đọc: 6
Web KT
Back
Top Bottom