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

Xuân hiếu

Thành viên thường trực
Tham gia ngày
23 Tháng năm 2008
Bài viết
235
Được thích
72
Điểm
0
Nơi ở
Ia Pa - Gia Lai
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

happyghost

Thành viên mới
Tham gia ngày
4 Tháng mười hai 2009
Bài viết
15
Được thích
6
Điểm
0
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:

Xuân hiếu

Thành viên thường trực
Tham gia ngày
23 Tháng năm 2008
Bài viết
235
Được thích
72
Điểm
0
Nơi ở
Ia Pa - Gia Lai
Ý 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:

happyghost

Thành viên mới
Tham gia ngày
4 Tháng mười hai 2009
Bài viết
15
Được thích
6
Điểm
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
 

Xuân hiếu

Thành viên thường trực
Tham gia ngày
23 Tháng năm 2008
Bài viết
235
Được thích
72
Điểm
0
Nơi ở
Ia Pa - Gia Lai
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
 

nghiaphuc

Thành viên gạo cội
Thành viên danh dự
Tham gia ngày
25 Tháng chín 2009
Bài viết
5,722
Được thích
9,528
Điểm
910
Nơi ở
Ayun Pa - Gia Lai
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

Xuân hiếu

Thành viên thường trực
Tham gia ngày
23 Tháng năm 2008
Bài viết
235
Được thích
72
Điểm
0
Nơi ở
Ia Pa - Gia Lai
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.
 

quanghai1969

Thành viên gạo cội
Tham gia ngày
21 Tháng hai 2009
Bài viết
5,617
Được thích
7,019
Điểm
860
Nơi ở
Thuận An, Bình Dương
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
 

Xuân hiếu

Thành viên thường trực
Tham gia ngày
23 Tháng năm 2008
Bài viết
235
Được thích
72
Điểm
0
Nơi ở
Ia Pa - Gia Lai
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

Lần chỉnh sửa cuối:

hoangvuluan

Thành viên tích cực
Tham gia ngày
2 Tháng mười một 2008
Bài viết
983
Được thích
2,772
Điểm
0
Nơi ở
Huế
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 à!!!!
 

Xuân hiếu

Thành viên thường trực
Tham gia ngày
23 Tháng năm 2008
Bài viết
235
Được thích
72
Điểm
0
Nơi ở
Ia Pa - Gia Lai
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

Lần chỉnh sửa cuối:

hoangvuluan

Thành viên tích cực
Tham gia ngày
2 Tháng mười một 2008
Bài viết
983
Được thích
2,772
Điểm
0
Nơi ở
Huế
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

Xuân hiếu

Thành viên thường trực
Tham gia ngày
23 Tháng năm 2008
Bài viết
235
Được thích
72
Điểm
0
Nơi ở
Ia Pa - Gia Lai
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:

hoangvuluan

Thành viên tích cực
Tham gia ngày
2 Tháng mười một 2008
Bài viết
983
Được thích
2,772
Điểm
0
Nơi ở
Huế
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)
 

Xuân hiếu

Thành viên thường trực
Tham gia ngày
23 Tháng năm 2008
Bài viết
235
Được thích
72
Điểm
0
Nơi ở
Ia Pa - Gia Lai
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:
Top Bottom