Giúp viết code tổng hợp dữ liệu

Liên hệ QC

Xuân hiếu

Thành viên thường trực
Tham gia
23/5/08
Bài viết
235
Được thích
72
Chào các bạn của giải pháp EC
Mình có 1 file tổng đây là file có 5 sheet có cấu trúc khác nhau. và rất nhiều file con có cấu trúc giống như file tổng.
Mình muốn các bạn giúp mình viết 1 con macro gắn 1 cái nút để khi nhấn nút thì nó tự động tính tổng
Giữ liệu mình gửi kèm rất mong quí bạn giúp đở
 

File đính kèm

  • PC THCS HHH.rar
    54.4 KB · Đọc: 69
Mình sử dụng chức năng Record Macro thì có được đoạn CODE sau:

Mã:
Sub Cap_nhat()
'
' Cap_nhat Macro
'
    Windows("TH.xls").Activate
    Workbooks.Open Filename:="C:\Users\LONG PRO\Desktop\PC THCS HHH\TRUONG A.xls"
    Workbooks.Open Filename:="C:\Users\LONG PRO\Desktop\PC THCS HHH\TRUONG B.xls"
    Workbooks.Open Filename:="C:\Users\LONG PRO\Desktop\PC THCS HHH\TRUONG C.xls"
    Range("C11").Select
    ActiveCell.FormulaR1C1 = _
        "='[TRUONG A.xls]Mau 1'!R11C3+'[TRUONG B.xls]Mau 1'!R11C3+'[TRUONG C.xls]Mau 1'!R11C3"
    Range("C11").Select
    Selection.AutoFill Destination:=Range("C11:AC11"), Type:=xlFillDefault
    Range("C11:AC11").Select
    Selection.AutoFill Destination:=Range("C11:AC15"), Type:=xlFillDefault
    Range("C17").Select
    ActiveCell.FormulaR1C1 = _
        "='[TRUONG A.xls]Mau 1'!R17C3+'[TRUONG B.xls]Mau 1'!R17C3+'[TRUONG C.xls]Mau 1'!R17C3"
    Range("C17").Select
    Selection.AutoFill Destination:=Range("C17:AC17"), Type:=xlFillDefault
    Range("C17:AC17").Select
    Selection.AutoFill Destination:=Range("C17:AC20"), Type:=xlFillDefault
    Range("C11:AC15").Select
    Selection.NumberFormat = "#"
    Range("C17:AC20").Select
    Selection.NumberFormat = "#"
    Range("C11:AC15").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C17:AC20").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWorkbook.Save
    Workbooks("TRUONG A.xls").Save
    Workbooks("TRUONG B.xls").Save
    Workbooks("TRUONG C.xls").Save
    Workbooks("TRUONG A.xls").Close
    Workbooks("TRUONG B.xls").Close
    Workbooks("TRUONG C.xls").Close
End Sub


Chỗ Workbooks.Open : anh xem lại đường dẫn cụ thể ở máy anh nha, Workbooks.Save và Close thì tùy anh có muốn tự động save và close hay không, nếu không cần thì anh delete mấy dòng đó đi.

Anh Assign Macro... cho button CAP NHAT DU LIEU ở file TH.xls là ok. Nhân tiên Delete luôn Macro1 đang gắn ở nút đó ở toàn bộ các file để khỏi báo lỗi.

Mình cũng là dân newbie thôi, cũng mong mọi người góp ý kiến để học hỏi. Xin cám ơn mọi người.
 
Lần chỉnh sửa cuối:
Upvote 0
Ý mình là tất cả 5 sheet đều tổng hợp hết chỉ bằng 1 con macro thôi chứ không phải chỉ tổng hợp có 1 sheet1 (Mẫu 1)
Cũng cảm ơn bạn nhiều.
Bạn nào có cách rút gọn hơn, đầy đủ hơn không giúp mình với.

Mình sử dụng chức năng Record Macro thì có được đoạn CODE sau:

Mã:
Sub Cap_nhat()
'
' Cap_nhat Macro
'
    Windows("TH.xls").Activate
    Workbooks.Open Filename:="C:\Users\LONG PRO\Desktop\PC THCS HHH\TRUONG A.xls"
    Workbooks.Open Filename:="C:\Users\LONG PRO\Desktop\PC THCS HHH\TRUONG B.xls"
    Workbooks.Open Filename:="C:\Users\LONG PRO\Desktop\PC THCS HHH\TRUONG C.xls"
    Range("C11").Select
    ActiveCell.FormulaR1C1 = _
        "='[TRUONG A.xls]Mau 1'!R11C3+'[TRUONG B.xls]Mau 1'!R11C3+'[TRUONG C.xls]Mau 1'!R11C3"
    Range("C11").Select
    Selection.AutoFill Destination:=Range("C11:AC11"), Type:=xlFillDefault
    Range("C11:AC11").Select
    Selection.AutoFill Destination:=Range("C11:AC15"), Type:=xlFillDefault
    Range("C11:AC15").Select
    ActiveWindow.SmallScroll Down:=6
    Range("C11").Select
    Selection.Copy
    Range("C17").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = _
        "='[TRUONG A.xls]Mau 1'!R17C3+'[TRUONG B.xls]Mau 1'!R17C3+'[TRUONG C.xls]Mau 1'!R17C3"
    Range("C17").Select
    Selection.AutoFill Destination:=Range("C17:AC17"), Type:=xlFillDefault
    Range("C17:AC17").Select
    Selection.AutoFill Destination:=Range("C17:AC20"), Type:=xlFillDefault
    Range("C17:AC20").Select
    Range("C11:AC15").Select
    Selection.NumberFormat = "#"
    Range("C17:AC20").Select
    Selection.NumberFormat = "#"
    Sheets("Mau 1").Select
    Range("C11:AC15").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C17:AC20").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWorkbook.Save
    Workbooks("TRUONG A.xls").Save
    Workbooks("TRUONG B.xls").Save
    Workbooks("TRUONG C.xls").Save
    Workbooks("TRUONG A.xls").Close
    Workbooks("TRUONG B.xls").Close
    Workbooks("TRUONG C.xls").Close
End Sub


Chỗ Workbooks.Open : anh xem lại đường dẫn cụ thể ở máy anh nha, Workbooks.Save và Close thì tùy anh có muốn tự động save và close hay không, nếu không cần thì anh delete mấy dòng đó đi.

Anh Assign Macro... cho button CAP NHAT DU LIEU ở file TH.xls là ok. Nhân tiên Delete luôn Macro1 đang gắn ở nút đó ở toàn bộ các file để khỏi báo lỗi.

Mình cũng là dân newbie thôi, cũng mong mọi người góp ý kiến để học hỏi. Xin cám ơn mọi người.
 
Lần chỉnh sửa cuối:
Upvote 0
Ah, áp dụng theo cách của sheet1, nếu record tiếp cho những sheet2,3,4,5.... thì sao nhỉ? Code... quá dài thì phải, nhưng cũng tạm xài được mà :D
 
Upvote 0
Bạn thì chọn mở 3 file vậy nếu có 4 file lại phải sửa code nữa nên mình muốn là có file nào thì tổng hợp file đó (các file con này nằm cùng 1 thư mục nào đó). Nếu với cách trên khi không có file thì code bị lỗi nên mình mới hỏi các bạn cùng nghiên cứu chỉ giúp. Cảm ơn bạn nhiều.
Ah, áp dụng theo cách của sheet1, nếu record tiếp cho những sheet2,3,4,5.... thì sao nhỉ? Code... quá dài thì phải, nhưng cũng tạm xài được mà :D
 
Upvote 0
Chào các bạn của giải pháp EC
Mình có 1 file tổng đây là file có 5 sheet có cấu trúc khác nhau. và rất nhiều file con có cấu trúc giống như file tổng.
Mình muốn các bạn giúp mình viết 1 con macro gắn 1 cái nút để khi nhấn nút thì nó tự động tính tổng
Giữ liệu mình gửi kèm rất mong quí bạn giúp đở
Hỏi bạn hiền một chút nhé: Tất cả biểu mẫu đều cộng dồn từ các file con hay chỉ riêng mẫu 1 và mẫu 6 mới cộng dồn, còn các biểu mẫu còn lại thì copy kế tiếp vào danh sách?
Mình gợi ý một cách này, Hiếu triển khai thử xem nhé (dạo này làm biếng viết code quá):
- Sử dụng phương thức Application.FileDialog(1) để chọn các file con cần tổng hợp.
- Mở lần lượt các file đã chọn, sheet nào cần cộng dồn thì cứ copy dữ liệu từ file con và PasteSpecial với tùy chọn Add vào file tổng hợp, sheet nào cần copy tiếp vào danh sách thì copy và dán qua hoặc đơn giản là Vùng_đích.Value=Vùng_nguồn.Value.
- Đóng file con lại (sử dụng phương thức Workbook.Close False).
Hiếu tham khảo chức năng cập nhật trên file này nhé (Sub CapNhat() trên Module1, mọi thứ khác đừng quan tâm vì nó không liên quan). Đây là file lúc trước làm cho anh ngodany135, giờ làm biếng chế lại nên gửi luôn để Hiếu tham khảo.
 

File đính kèm

  • Chia File & Cap nhat.rar
    156.6 KB · Đọc: 113
Upvote 0
Nói chung là mẫu nào cũng cộng dồn tuy nhiên có mẫu thì tính hết có mẫu thì liên kết các mẫu khác. Nói chung là không hoàn toàn cộng hết.
Cảm ơn Nghĩaphúc nhiều nhé

Hỏi bạn hiền một chút nhé: Tất cả biểu mẫu đều cộng dồn từ các file con hay chỉ riêng mẫu 1 và mẫu 6 mới cộng dồn, còn các biểu mẫu còn lại thì copy kế tiếp vào danh sách?
Mình gợi ý một cách này, Hiếu triển khai thử xem nhé (dạo này làm biếng viết code quá):
- Sử dụng phương thức Application.FileDialog(1) để chọn các file con cần tổng hợp.
- Mở lần lượt các file đã chọn, sheet nào cần cộng dồn thì cứ copy dữ liệu từ file con và PasteSpecial với tùy chọn Add vào file tổng hợp, sheet nào cần copy tiếp vào danh sách thì copy và dán qua hoặc đơn giản là Vùng_đích.Value=Vùng_nguồn.Value.
- Đóng file con lại (sử dụng phương thức Workbook.Close False).
Hiếu tham khảo chức năng cập nhật trên file này nhé (Sub CapNhat() trên Module1, mọi thứ khác đừng quan tâm vì nó không liên quan). Đây là file lúc trước làm cho anh ngodany135, giờ làm biếng chế lại nên gửi luôn để Hiếu tham khảo.
 
Upvote 0
Bạn Nghĩa phúc giúp mình viết luôn nhé.
 
Upvote 0
Sao không ai tham gia viết cái code này vậy ta.
 
Upvote 0
Có ai giúp mình hoàn chỉnh bài này không àk mình cảm ơn nhiều
 
Upvote 0
Tổng hợp thì không khó nhưng không hiểu tổng hợp thế nào vì mở file ra có thấy số đâu. Cũng phải có cái gì cụ thể tí mới hình dung được mà viết
 
Upvote 0
Cảm ơn bạn trước
Minh nói thêm một tý để các bạn giúp nhanh hơn
mình có 1 file tổng (TH.XLS) không cùng nằm trong thư mục chứa các file con (truonga; TRUONGB; ...) các file con này nằm trong 1 thư mục riêng
Mình muốn như sau
Viết 1 con macro làm chức năng tổng hợp các số liệu từ các file con về file tổng
Mẫu số 1 tổng hợp từ C11:ẠC và C17:AC20 (của tất cả các file)
Mẫu số 2 tổng hợp ô D11; N11 (của tất cả các file)
Mẫu số 5 tổng hợp ô N11 (của tất cả các file)
Mẫu số 6 tổng hợp từ D12:Y15; D17:Y17 (của tất cả các file)
Mẫu số 7 tổng hợp ô C8; E8:V8 (của tất cả các file)
Cách tổng hợp như thế này khi kích hoạt macro nay chạy thì macro nay tìm trong thư mục chứa các file con tìm thấy file nào thì tự động tổng hợp nếu không thấy thì hiện thông báo không tìm thấy file cần tổng hợp.
Cảm ơn bạn trước rất nhiều

Tổng hợp thì không khó nhưng không hiểu tổng hợp thế nào vì mở file ra có thấy số đâu. Cũng phải có cái gì cụ thể tí mới hình dung được mà viết
 

File đính kèm

  • PC THCS HHH.rar
    54.4 KB · Đọc: 12
Lần chỉnh sửa cuối:
Upvote 0
Thật tình thì tôi viết cũng gần xong rồi, nghĩ là bạn sẽ đưa file với 1 ít dữ liệu để test, nhưng bạn làm tôi "thất vọng" quá!
Bạn lại gửi "một mớ file rỗng" lên để tôi lại mất công down về thế này à!!!!
 
Upvote 0
Xin lỗi mình đưa lộn mình đưa hết file lên bạn xem giúp nhá

Thật tình thì tôi viết cũng gần xong rồi, nghĩ là bạn sẽ đưa file với 1 ít dữ liệu để test, nhưng bạn làm tôi "thất vọng" quá!
Bạn lại gửi "một mớ file rỗng" lên để tôi lại mất công down về thế này à!!!!
 

File đính kèm

  • PC THCS IA PA.rar
    490.5 KB · Đọc: 23
Lần chỉnh sửa cuối:
Upvote 0
File của bạn đây. Nhớ là các sheet phải chuẩn tên nha, sheet MAU 7 có 1 khoảng trắng thừa đấy
 

File đính kèm

  • TH.rar
    23.8 KB · Đọc: 19
Upvote 0
Thêm 1 cách để bạn lựa chọn.
Trong file tôi sử dụng 1 sheet TEMP để tạm tính số liệu (bạn đừng xóa sheet này.
Bạn chạy kiểm tra số liệu, có gì trao đổi ở đây.
 

File đính kèm

  • TH.rar
    23.2 KB · Đọc: 18
Upvote 0
Bạn xem lại giúp tại mẫu 6 tổng chưa đúng bạn ơi?
Bạn chỉ giúp mình một tý nữa là làm thêm một cộng tổng sau khi có tên các đơn vị tại các mẫu 2; 5; 7
Với lại tại mẫu 2; mẫu 5; và mẫu 7 bạn xem giúp là không để xuất hiện 1 dòng trắng đầu tiên
ở cột số TT thì tự động đánh số thứ tự giúp tại hàng tổng thì không đánh số thứ tự nữa.
Cảm ơn bạn nhiều..
Thêm 1 cách để bạn lựa chọn.
Trong file tôi sử dụng 1 sheet TEMP để tạm tính số liệu (bạn đừng xóa sheet này.
Bạn chạy kiểm tra số liệu, có gì trao đổi ở đây.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem lại giúp tại mẫu 6 tổng chưa đúng bạn ơi?
Bạn chỉ giúp mình một tý nữa là làm thêm một cộng tổng sau khi có tên các đơn vị tại các mẫu 2; 5; 7
Với lại tại mẫu 2; mẫu 5; và mẫu 7 bạn xem giúp là không để xuất hiện 1 dòng trắng đầu tiên
Cảm ơn bạn nhiều..
Để cộng tổng (mẫu 2,5,7) ở dòng đầu tiên không được à, hay là phải nằm ở dòng cuối cùng?
Mẫu 6 tổng sai toàn bộ hay chỉ sai ở 1 vài vị trí (bạn test lỗi thì nên nói cho rõ lỗi như thế nào)
 
Upvote 0
Cộng tổng ở cột cuối thì nhìn đẹp hơn còn mẫu 6 thì sai toàn bộ ở mẫu này dữ liệu phần nhiều là nằm ở cột quản lý và giáo viên
với lại giúp mình đánh số thứ tự cho các mẫu 2; 5; 7 luôn nhé
cảm ơn nhiều
Để cộng tổng (mẫu 2,5,7) ở dòng đầu tiên không được à, hay là phải nằm ở dòng cuối cùng?
Mẫu 6 tổng sai toàn bộ hay chỉ sai ở 1 vài vị trí (bạn test lỗi thì nên nói cho rõ lỗi như thế nào)
 
Lần chỉnh sửa cuối:
Upvote 0
Làm cho bạn mẫu 1 đây, các mẫu khác bạn tự làm cho ... quen!
Chú ý: code đặt ở file tổng hợp, nhưng bạn phải mở tất cả các file
 

File đính kèm

  • Tonghop.xls
    75.5 KB · Đọc: 17
Upvote 0
Web KT
Back
Top Bottom