Liên kết động và tổng hợp

Liên hệ QC

nguyenvietviet

Thành viên hoạt động
Tham gia
4/3/08
Bài viết
110
Được thích
11
Nghề nghiệp
Nhân viên văn phòng
Chào các pác. E lại có một chút rắc rối mới. Mong các pác chỉ giúp.
Em có ột folder trong đó có nhiều sheet khác nhau nhưng có cùng một mẫu một định dạng.
Trong đó có sheet" Luyke". Sheets này là e muốn tổng hợp dữ liệu của tất cả các sheet có trog folder (trong này e mới làm ví dụ có 2 sheet thôi).
Em đã ghi rõ yêu cầu ở trong sheet "Luyke" rồi.
Cám ơm mọi người.
 

File đính kèm

  • TH.rar
    8.4 KB · Đọc: 26
Có thể tự động dò file trong thư mục nhưng mình thích dùng danh sách file hơn cho chắc chắn và chuẩn.
Code tập hợp như sau:
Mã:
Sub Rectangle1_Click()
Dim MyPath As String, Tm, Tm1, x, i, tu, den, hg
Dim Sh As Worksheet, Wb As Workbook, Cl As Range, Cl2 As Range
Application.ScreenUpdating = False
Sheet2.[A8:G8].Resize(1000).ClearContents
tu = Sheet2.[C3]: den = Sheet2.[E3]: hg = Sheet2.[C2]
MyPath = ThisWorkbook.path & "\"
Set Cl2 = Sheet2.[a65536].End(3).Offset(1)
If Cl2.Row < 8 Then Set Cl2 = Sheet2.[A8]
Tm = Sheet2.[M1:M20]
For x = 1 To UBound(Tm, 1)
If Tm(x, 1) <> "" Then
Set Wb = Workbooks.Open(MyPath & Tm(x, 1))
Set Sh = Wb.Sheets("NK")
Set Cl = Sh.[a65536].End(3)
If Cl.Row > 3 Then
Tm1 = Sh.Range("A4:I" & Cl.Row)
For i = 1 To UBound(Tm1, 1)
If Tm1(i, 2) >= tu And Tm1(i, 2) <= den And Tm1(i, 5) = hg Then
Cl2 = Tm(x, 1)
Cl2.Offset(, 1) = Tm1(i, 2)
Cl2.Offset(, 2) = Tm1(i, 3)
Cl2.Offset(, 3) = Tm1(i, 4)
Cl2.Offset(, 4) = IIf(Left(Tm1(i, 3), 2) = "PN", Tm1(i, 7), 0)
Cl2.Offset(, 5) = IIf(Left(Tm1(i, 3), 2) = "PX", Tm1(i, 7), 0)
Cl2.Offset(, 6) = Cl2.Offset(-1, 6) + Cl2.Offset(, 4) - Cl2.Offset(, 5)
Set Cl2 = Cl2.Offset(1)
End If
Next i
End If
Wb.Close
End If
Next
Set Wb = Nothing: Set Cl = Nothing
Set Cl2 = Nothing: Set Sh = Nothing
End Sub
 

File đính kèm

  • th.rar
    17.2 KB · Đọc: 30
Upvote 0
Cảm ơn pác.
Cái này cũng tạm ổn rùi. Khi phát sinh file mới ta chỉ cần ghi vào danh sách file cần tổng hợp đúng không ak? Nhưng ví dụ ta xóa mất cái file đó ( đường dẫn không còn ) thì module sẽ không chạy. Set Wb = Workbooks.Open(MyPath & Tm(x, 1)). Chỗ này ta có thể cho thêm Msgbox được không?
Còn bên sheet TH của file "Luyke" pác lag hộ em luôn đi ak. Cũng tổng hợp ở các sheet.
Hai cột Lũy kế nhập và lũy kế xuất ở sheet "TH" từ file thứ 2 trở đi sẽ có. (Đó là tổng hợp từ file đầu tiên đến file hiện tại" Pác xem hộ em luôn nha
 
Upvote 0
Vấn dề này thực ra đơn giản thôi:
-Trong code nên bẫy lỗi mở file không có.
-Dùng 1 code để liệt kê tên file dể kiểm tra trước khi chạy.
-Sheet TH chẳng qua là tiện thể thôi nhưng theo mình đâu có hợp lý vì nó chỉ tổng hợp 1 loại vật tư và trong thời gian tuỳ chọn. Vậy thì chép máy cái đó phỏng có ích gì. Theo mình phải lấy cái ta lọc thôi chứ.
-Chỗ bạn muốn cho Msgbox nếu cần thì cho luôn cái Dialog cho bạn thích chọn file nào thì chọn.

Bạn hoàn toàn có thể làm được hoặc kiếm trên GPE có rất nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn dề này thực ra đơn giản thôi:
-Trong code nên bẫy lỗi mở file không có.
-Dùng 1 code để liệt kê tên file dể kiểm tra trước khi chạy.
-Sheet TH chẳng qua là tiện thể thôi nhưng theo mình đâu có hợp lý vì nó chỉ tổng hợp 1 loại vật tư và trong thời gian tuỳ chọn. Vậy thì chép máy cái đó phỏng có ích gì. Theo mình phải lấy cái ta lọc thôi chứ.
-Chỗ bạn muốn cho Msgbox nếu cần thì cho luôn cái Dialog cho bạn thích chọn file nào thì chọn.

Bạn hoàn toàn có thể làm được hoặc kiếm trên GPE có rất nhiều.
Sheet TH sao không hợp lý vậy pác?. Nó là tổng hợp của tất cả các lại mặt hàng trong thời gian tùy chọn.
Còn cái cột Luyke nữa nó cũng cộng dồn các loại vật tư đến thời điểm tính.
MOng pác
 
Upvote 0
Web KT
Back
Top Bottom