Tổng hợp dữ liệu từ các file khác vào 1 file Tổng hợp

Liên hệ QC

trung78952

Thành viên mới
Tham gia
12/11/07
Bài viết
27
Được thích
3
Dear các bác, e muốn tổng hợp dữ liệu của 1 vùng ở các các file khác nhau vào 1 file tổng hợp. Nhưng vùng này không cố định, nó biến đổi (tăng giảm số lượng row hàng tháng). Xin các bác xem fle đính kèm và chỉ giùm. Thanks alot!
 

File đính kèm

Dear các bác, e muốn tổng hợp dữ liệu của 1 vùng ở các các file khác nhau vào 1 file tổng hợp. Nhưng vùng này không cố định, nó biến đổi (tăng giảm số lượng row hàng tháng). Xin các bác xem fle đính kèm và chỉ giùm. Thanks alot!
Nếu có 2 học sinh bị trùng tên thì coi như đi hoang. Không ai quản lý bằng họ tên bao giờ. Học sinh thì phải có mã số của học sinh, nhân viên thì có mã số của nhân viên.
 
Dear bác, đây chỉ là file e làm mẫu thôi, chứ e ko phải là giáo viên mà quản lý học sinh, e đưa file mẫu, nhưng kết quả e sẽ áp dụng cho việc khác, chẳng hạn bác vừa làm ở bộ phận kd, vừa làm ở bộ phận bán hàng, thì cuối tháng bác tổng kết chấm công kiểm gì khi mỗi bộ phận phải chấm riêng lẻ. Còn mã nhân viên thì tất yếu là sẽ phải có để làm tiêu thức tìm kiếm (chứ chẳng ai đi tìm theo tên cả). Bác có giúp đc ko nhỉ???
 
Dear bác, đây chỉ là file e làm mẫu thôi, chứ e ko phải là giáo viên mà quản lý học sinh, e đưa file mẫu, nhưng kết quả e sẽ áp dụng cho việc khác, chẳng hạn bác vừa làm ở bộ phận kd, vừa làm ở bộ phận bán hàng, thì cuối tháng bác tổng kết chấm công kiểm gì khi mỗi bộ phận phải chấm riêng lẻ. Còn mã nhân viên thì tất yếu là sẽ phải có để làm tiêu thức tìm kiếm (chứ chẳng ai đi tìm theo tên cả). Bác có giúp đc ko nhỉ???
Dùng thử code này, nếu may mắn thì xài được
PHP:
Sub TongHop()
Dim FileName, I As Long, J As Long, Temp(), path As String
Dim Dic As Object, K As Long, Darr(1 To 10000, 1 To 5), X As Long
Set Dic = CreateObject("scripting.dictionary")
path = ThisWorkbook.path
FileName = Array("lop 1A", "lop 1B")
For I = 0 To UBound(FileName)
   Workbooks.Open (path & "\" & FileName(I) & ".xlsx")
   With ActiveWorkbook
      With .ActiveSheet
         Temp = .Range(.[B5], .[B65536].End(3)).Resize(, 4).Value
         For J = 1 To UBound(Temp)
            If Not Dic.exists(Temp(J, 1)) Then
               K = K + 1
               Dic.Add Temp(J, 1), K
               Darr(K, 1) = K
               For X = 2 To 5
                  Darr(K, X) = Temp(J, X - 1)
               Next
            Else
               For X = 3 To 5
                  Darr(Dic.Item(Temp(J, 1)), X) = _
                  Darr(Dic.Item(Temp(J, 1)), X) + Temp(J, X - 1)
               Next
            End If
         Next
      End With
      .Close
   End With
Next
[A5:E10000].ClearContents
If K Then [A5].Resize(K, 5) = Darr
End Sub
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom