Tổng hợp dữ liệu từ nhiều file vào một file

Liên hệ QC

nguyen6571gpex

Thành viên thường trực
Tham gia
22/4/11
Bài viết
254
Được thích
71
Nghề nghiệp
Dạy học
Chào các bạn! Chúc một ngày mới tốt lành!
Mình có nhiều file dữ liệu (cấu trúc giống nhau) nhờ các bạn viết code tổng hợp vào file tổng hợp chung (chi tiết mình đã ghi trong file Tonghop) mong các bạn giúp đỡ. Trân trọng cảm ơn!
 

File đính kèm

  • NhoGPE.rar
    72.2 KB · Đọc: 16
Bạn nào giúp mình với! Không hiểu hay mình vi phạm nội quy gì? Còn bài viết về nội dung này mình cũng đã đọc nhưng mình không biết gì về VBA nên đọc cũng không hiểu và không áp dung cho bản thân được.
 
Chào các bạn! Chúc một ngày mới tốt lành!
Mình có nhiều file dữ liệu (cấu trúc giống nhau) nhờ các bạn viết code tổng hợp vào file tổng hợp chung (chi tiết mình đã ghi trong file Tonghop) mong các bạn giúp đỡ. Trân trọng cảm ơn!
Bấm nút chọn thư mục chứa các file dữ liệu.
 

File đính kèm

  • Tonghop_nguyen6571gpex.xlsm
    25.2 KB · Đọc: 51
Chào các bạn!
Hôm trước mình nhờ các bạn giúp code tổng hợp dữ liệu từ nhiều file vào một file tổng hợp. Mình được các bạn quan tâm và bạn Maika8008 giúp đỡ và đã sử dụng, rất hiệu quả. Tuy nhiên mình lại có khó khăn nữa mong các bạn giúp đỡ:
1. Trong file nguồn có nhiều sheets mình muốn tổng hợp dữ liệu từ sheet 2, sau đó lại tổng hợp dữ liệu từ sheet 3 chẳng hạn thì không biết sửa code ở câu lệnh nào?
2. Trong file tổng hợp mình muốn bắt đầu Paste dữ liệu vào vị trí khác (có thể do tiêu mục nhiều lên thì điểm bắt đầu sẽ thay đổi xuống những dòng dưới) thì sửa ở câu lệnh nào?
3. Mình chưa hiểu Range("B65536") trong code nghĩa là gì?
Thật lòng mình không biết gì VBA nên mong các bạn chỉ giùm và giúp mình với. Trân trọng!
(Mình gửi kèm file dữ liệu và tổng hợp các bạn sửa giúp)
 

File đính kèm

  • NhoGPE2.rar
    102.1 KB · Đọc: 13
Chào các bạn!
Hôm trước mình nhờ các bạn giúp code tổng hợp dữ liệu từ nhiều file vào một file tổng hợp. Mình được các bạn quan tâm và bạn Maika8008 giúp đỡ và đã sử dụng, rất hiệu quả. Tuy nhiên mình lại có khó khăn nữa mong các bạn giúp đỡ:
1. Trong file nguồn có nhiều sheets mình muốn tổng hợp dữ liệu từ sheet 2, sau đó lại tổng hợp dữ liệu từ sheet 3 chẳng hạn thì không biết sửa code ở câu lệnh nào?
2. Trong file tổng hợp mình muốn bắt đầu Paste dữ liệu vào vị trí khác (có thể do tiêu mục nhiều lên thì điểm bắt đầu sẽ thay đổi xuống những dòng dưới) thì sửa ở câu lệnh nào?
3. Mình chưa hiểu Range("B65536") trong code nghĩa là gì?
Thật lòng mình không biết gì VBA nên mong các bạn chỉ giùm và giúp mình với. Trân trọng!
(Mình gửi kèm file dữ liệu và tổng hợp các bạn sửa giúp)
Tôi có ghi chú trong code nhưng vắn tắt và không gõ dấu được nên nói thêm ở đây:
1. Bạn ghi tổng hợp từ sheet 2 nhưng bạn đã nhầm: ở đây là Sheets(2) - số 2 trong ngoặc đơn - để chỉ sheet thứ 2 tính từ trái sang phải. Trong khi đó file LC bui huu dien.xls bạn để sheet Mẫu 3 cần tổng hợp nằm ở thứ 3 nên code sẽ lấy nhầm số liệu ở sheet khác. Muốn không sai thì bạn phải kéo nó về bên phải 1 sheet. Để khỏi nhầm lẫn bạn nên dùng tên Sheet không có dấu vì không gõ dấu trong code được. Như sheet Mẫu 3 bạn sửa lại thành Mau 3 và viết trong code là Sheets("Mau 3").
2. Điểm bắt đầu dán dữ liệu được tính bằng câu lệnh MyWb.Sheets(1).Range("B65536").End(xlUp).Offset(1) tức là từ ô B65536 nhảy con trỏ lên gặp ô có dữ liệu cuối cùng Range("B65536").End(xlUp), nhích xuống 1 dòng Offset(1).
3. Range("B65536") là gõ thế cho nhanh do 65536 là dòng cuối của trang tính trong Excel 2003. Hiện hay để chắc ăn người ta hay ghi là Range("B" & Rows.Count). Rows.Count nếu ở Excel 2003 là 65536, còn ở 2007 trở đi là 1048576. Còn tác dụng đã nói ở mục 2.

P/S: Còn vụ Sheets(3) bạn đưa cái sheet đó lên và nói rõ tổng hợp vào đâu thì tôi sẽ chỉ.
 

File đính kèm

  • Tonghop2.xlsm
    25.5 KB · Đọc: 14
Tôi có ghi chú trong code nhưng vắn tắt và không gõ dấu được nên nói thêm ở đây:
1. Bạn ghi tổng hợp từ sheet 2 nhưng bạn đã nhầm: ở đây là Sheets(2) - số 2 trong ngoặc đơn - để chỉ sheet thứ 2 tính từ trái sang phải. Trong khi đó file LC bui huu dien.xls bạn để sheet Mẫu 3 cần tổng hợp nằm ở thứ 3 nên code sẽ lấy nhầm số liệu ở sheet khác. Muốn không sai thì bạn phải kéo nó về bên phải 1 sheet. Để khỏi nhầm lẫn bạn nên dùng tên Sheet không có dấu vì không gõ dấu trong code được. Như sheet Mẫu 3 bạn sửa lại thành Mau 3 và viết trong code là Sheets("Mau 3").
2. Điểm bắt đầu dán dữ liệu được tính bằng câu lệnh MyWb.Sheets(1).Range("B65536").End(xlUp).Offset(1) tức là từ ô B65536 nhảy con trỏ lên gặp ô có dữ liệu cuối cùng Range("B65536").End(xlUp), nhích xuống 1 dòng Offset(1).
3. Range("B65536") là gõ thế cho nhanh do 65536 là dòng cuối của trang tính trong Excel 2003. Hiện hay để chắc ăn người ta hay ghi là Range("B" & Rows.Count). Rows.Count nếu ở Excel 2003 là 65536, còn ở 2007 trở đi là 1048576. Còn tác dụng đã nói ở mục 2.

P/S: Còn vụ Sheets(3) bạn đưa cái sheet đó lên và nói rõ tổng hợp vào đâu thì tôi sẽ chỉ.
Cảm ơn bạn rất nhiều!
Mình đã hiểu ra cái sai của bản thân rồi. Đúng là không biết thì xem code cũng không hiểu được. Vụ sheet(3) mình sẽ mong bạn giúp tiếp. Trân trọng cảm ơn bạn!
 
Chào các bạn. Chào bạn Maika8008!
Nhờ các bạn giúp phần tổng hợp sheet(3) (trong file tên sheet là Mẫu 02.1 cũng có thể các đơn vị đã đổi thành Mẫu 02 hoặc di chuyển không đúng vị trí thứ 3. Qua hướng dẫn của bạn Maika8008 ở #6 mình hiểu khi tổng hợp phải đặt đúng vị trí thứ 3 từ trái qua phải). Trong sheet đó có 3 danh sách cần thống kê (Cán bộ quản lý, Giáo viên tiểu học, Giáo viên trung học cơ sở) mình muốn coppy từng mục đó, mỗi danh sách vào một sheet riêng (như bản mẫu làm thủ công) vấn đề là các danh sách này vùng coppy là "động" các đơn vị có số lượng khác nhau, không trong vùng cố định. Mong các bạn giúp đỡ. Trân trọng cảm ơn!
 

File đính kèm

  • Tonghop3.xlsm
    40.6 KB · Đọc: 6
Chào các bạn. Chào bạn Maika8008!
Nhờ các bạn giúp phần tổng hợp sheet(3) (trong file tên sheet là Mẫu 02.1 cũng có thể các đơn vị đã đổi thành Mẫu 02 hoặc di chuyển không đúng vị trí thứ 3. Qua hướng dẫn của bạn Maika8008 ở #6 mình hiểu khi tổng hợp phải đặt đúng vị trí thứ 3 từ trái qua phải). Trong sheet đó có 3 danh sách cần thống kê (Cán bộ quản lý, Giáo viên tiểu học, Giáo viên trung học cơ sở) mình muốn coppy từng mục đó, mỗi danh sách vào một sheet riêng (như bản mẫu làm thủ công) vấn đề là các danh sách này vùng coppy là "động" các đơn vị có số lượng khác nhau, không trong vùng cố định. Mong các bạn giúp đỡ. Trân trọng cảm ơn!
Bạn thử file và muốn đọc hiểu code thì bấm F9 tại dòng lệnh cần ngắt để ngừng code, sau đó bấm F8 để chạy từng dòng lệnh. Quan sát sự thay đổi của file tonghop3 sau khi dòng lệnh thi hành.
 

File đính kèm

  • Tonghop3.xlsm
    34.7 KB · Đọc: 19
Bạn thử file và muốn đọc hiểu code thì bấm F9 tại dòng lệnh cần ngắt để ngừng code, sau đó bấm F8 để chạy từng dòng lệnh. Quan sát sự thay đổi của file tonghop3 sau khi dòng lệnh thi hành.
Cảm ơn bạn nhiều, mình sẽ làm theo và học hỏi. Trân trọng!
 
Lần chỉnh sửa cuối:
Chào các bạn! Chúc các bạn ngày mới nhiều niềm vui!

File dữ liệu nguồn gồm gần 20 sheet (đã nhờ ở https://www.giaiphapexcel.com/diend...macro-và-viết-code-ẩn-hiện-dòng-trống.156068/ và hoàn thiện). Tuy nhiên khi tổng hợp chỉ cần dữ liệu ở một số sheet.

Qua hướng dẫn của bạn Maika8008 trong #6 trên thì mình đã sửa code và tổng hợp riêng từng phần vào một sheet của file tổng hợp, như vậy phải mất nhiều file tổng hợp. (có file đính kèm)

Nhờ các bạn giúp code để khi nhấn lệnh “Tổng hợp” của file “Tonghop_GPE” thì tổng hợp dữ liệu từ các file nguồn vào các sheet của file tổng hợp (nội dung mẫu mong muốn có trong file đính kèm). Trân trọng cảm ơn và chờ sự giúp đỡ của các bạn!

P/s: - Các bạn chỉ giúp: Trong file tổng hợp ở Modul 2 có đoạn: Rang(“A28:A31”).select nghĩa là gì vì mình thay đổi thử thì không nhìn thấy dữ liệu thay đổi.

Trong #9 trên, bạn Maika8008 có hướng dẫn muốn hiểu code thì nhấn F9 để ngừng code rồi F8 để quan sát sự thay đổi nhưng mình làm thử mà không được, không hiểu tại sao?
 

File đính kèm

  • Tonghop_NhoGPE.rar
    411.3 KB · Đọc: 14
Khi chưa chạy code, muốn ngừng ở dòng nào thì cho con nháy chuột vào dòng đó rồi F9. Sau đó chạy code nó mới ngừng ở dòng đó, F8 để chạy từng dòng tiếp theo
 
Khi chưa chạy code, muốn ngừng ở dòng nào thì cho con nháy chuột vào dòng đó rồi F9. Sau đó chạy code nó mới ngừng ở dòng đó, F8 để chạy từng dòng tiếp theo
Cảm ơn bạn! Giúp mình tích hợp code ở sheet "Tonghop_GPE" #11 nhé. Trân trọng!
 
Cảm ơn bạn! Giúp mình tích hợp code ở sheet "Tonghop_GPE" #11 nhé. Trân trọng!
Không biết đâu là "các file nguồn" của bạn, còn đâu không phải là file nguồn (file thừa). Dữ liệu file tổng hợp cũng trống trơn nên không suy luận ra dữ liệu nguồn được
 
Không biết đâu là "các file nguồn" của bạn, còn đâu không phải là file nguồn (file thừa). Dữ liệu file tổng hợp cũng trống trơn nên không suy luận ra dữ liệu nguồn được
Cảm ơn bạn!
file nguồn là: 1a; 1a-1; 1a-2
file nhờ giúp: Tonghop_GPE
Còn các file: Tonghop_M.hoc; Tonghop_Diemso; Tonghop_PCNL1; Tonghop_PCNL2 là các file mình đã làm (dựa theo hướng dẫn của #6 của bạn ở trên)
Nhờ bạn bổ sung tích hợp code của file Tonghop_GPE để khi chạy code thì tổng hợp luôn dữ liệu vào 4 sheet của file Tonghop_GPE.
Vùng dữ liệu cần lấy vào từng sheet của file tổng hợp bạn xem code ở các file Tonghop_M.hoc; Tonghop_Diemso; Tonghop_PCNL1; Tonghop_PCNL2 dùm (Mình đưa những file này lên là bản thân cũng cố gắng nhưng chỉ làm được đơn lẻ vậy thôi và chưa chạy kết quả ra vì sợ nặng file đính kèm). Trân trọng!

P/s: Sợ vi phạm nội quy, nếu được mình có thể gỡ tệp đính kèm và đưa tệp mới thay cho tệp cũ ở #11.
 
Cảm ơn bạn!
file nguồn là: 1a; 1a-1; 1a-2
file nhờ giúp: Tonghop_GPE
Còn các file: Tonghop_M.hoc; Tonghop_Diemso; Tonghop_PCNL1; Tonghop_PCNL2 là các file mình đã làm (dựa theo hướng dẫn của #6 của bạn ở trên)
Nhờ bạn bổ sung tích hợp code của file Tonghop_GPE để khi chạy code thì tổng hợp luôn dữ liệu vào 4 sheet của file Tonghop_GPE.
Vùng dữ liệu cần lấy vào từng sheet của file tổng hợp bạn xem code ở các file Tonghop_M.hoc; Tonghop_Diemso; Tonghop_PCNL1; Tonghop_PCNL2 dùm (Mình đưa những file này lên là bản thân cũng cố gắng nhưng chỉ làm được đơn lẻ vậy thôi và chưa chạy kết quả ra vì sợ nặng file đính kèm). Trân trọng!
Điểm số không biết lấy ở đâu?
 
Lấy tuần tự từng sheet một thôi, xem file
Thật tuyệt vời! Cảm ơn bạn nhiều nhé! Ngoài việc giúp đỡ bạn còn chỉ rõ ý nghĩa các câu lệnh để mình có thể đọc và hiểu thêm về VBA. Trân trọng!
Phiền bạn chỉ giúp: Trong file tổng hợp ở Modul 2 có đoạn: Rang(“A28:A31”).select nghĩa là gì vì mình thay đổi thử thì không nhìn thấy dữ liệu thay đổi.
 
Phiền bạn chỉ giúp: Trong file tổng hợp ở Modul 2 có đoạn: Rang(“A28:A31”).select nghĩa là gì vì mình thay đổi thử thì không nhìn thấy dữ liệu thay đổi.
Range chứ không phải Rang.

Range(“A28:A31”).Select là quét chọn vùng từ A28 đến A31 của sheet hiện hành. Nhìn trên trang tính là thấy ngay. Đây là đoạn ghi macro để lấy lệnh merge các ô trên trang tính.
 
Web KT
Back
Top Bottom