Tổng hợp dữ liệu từ nhiều file không cùng cấu trúc dữ liệu

Liên hệ QC

Tuan_hcth

Thành viên thường trực
Tham gia
8/4/07
Bài viết
206
Được thích
11
Chào các anh, chị trên diễn đàn!

Em có nội dung tổng hợp dữ liệu từ nhiều file có cấu trúc không giống nhau vào một file nhưng không biết code vba để xử lý. Vì vậy, nhờ anh xem và giúp đỡ em cái ạ.

Nội dung công việc như sau:

Có 3 file data có cấu trúc dữ liệu không giống nhau, mỗi file lại có 1 hoặc 3 sheet cần lấy dữ liệu (file gửi kèm). Em muốn lấy các trường dữ liệu: tên nhân viên, mã nhân viên, doanh thu trong mỗi sheet của 3 file đó vào file tổng hợp. Trong file tổng hợp, cột sản phẩm chính là tên sheet của các file data tương ứng. Cột tháng_năm là số liệu của tháng trong năm, ở đây em đang để mặc định là tháng 01/2020.

Chu kỳ công việc: mỗi một tháng một lần.

Yêu cầu thêm về file tổng hợp: lữu trữ dữ liệu cả năm. Vì vậy, dữ liệu của tháng sau sẽ nối tiếp tháng trước. Dữ liệu ở cột tháng_năm tự động điền vào khi cập nhật dữ liệu.

Rất mong các anh, chị giúp đỡ. Cảm ơn anh, chị rất nhiều.
 

File đính kèm

  • Data1.xlsx
    9.7 KB · Đọc: 9
  • Data2.xlsx
    9.7 KB · Đọc: 7
  • Data3.xlsx
    9.8 KB · Đọc: 7
  • file tong hop.xlsx
    9 KB · Đọc: 7
Trời. Mỗi tháng mới phải làm một lần mà cũng muốn tự động.
 
Upvote 0
Sử dụng power query, chức năng append. Tổng hợp theo tháng thì mỗi sheet mỗi file phải có cột ngày
 
Upvote 0
Trời. Mỗi tháng mới phải làm một lần mà cũng muốn tự động.
Dạ, cũng đỡ mất thời gian hơn. Hơn nữa, học hỏi thêm được code vba từ các anh, chị trên diễn đàn
Bài đã được tự động gộp:

Sử dụng power query, chức năng append. Tổng hợp theo tháng thì mỗi sheet mỗi file phải có cột ngày
Anh có thể hướng dẫn cụ thể hơn được không ạ?
 
Upvote 0
Trời. Mỗi tháng mới phải làm một lần mà cũng muốn tự động.
Thì chuẩn rồi còn gì bác, người mỗi tháng 1 lần nhờ người (chăm chỉ) mỗi ngày nhiều lần giúp.

Bài này thì cứ copy bình thường là nhanh nhất. Vì dù có code hay lập query thì cũng phải sử dụng 1 lần 1 tháng
 
Upvote 0
Dạ, cũng đỡ mất thời gian hơn. Hơn nữa, học hỏi thêm được code vba từ các anh, chị trên diễn đàn
Quan trọng là nên học các chức năng quan trọng của Excel như bài #3 chỉ dẫn.
Cốt kiếc chỉ là chuyện cực chẳng đã.

Khi tôi tuyển ngừoi dùng Excel thì tôi sẽ giành 50% điểm cho kiến thức về thiết kế bảng tính, 40% cho khả năng phân tích dữ liệu, và 10% cho kiến thức VBA.
(tôi không chấm điểm các công thức là vì phải nắm vũững công thức mới có khả năng thiết kế và phân tích)
 
Upvote 0
Hình 1: Lấy 9 query từ excel, xoá bớt cột, và thêm cột SanPham cho từng query

1582968587573.png

Hình 2: Append và thêm cột Index

1582968648394.png

Hình 3: Kết quả (chưa có cột tháng năm, muốn có thì thêm vào 9 sheet và điền vào sẵn)

1582968730188.png

Mỗi tháng nhấn refresh 1 lần:

1582968957058.png
 
Upvote 0
Mấy chục năm trước, tôi bắt đầu làm việc với Fortran 4 và BASIC, sau đó qua Fortran 77 và Pascal, nhờ người mua giùm mỗi quyển sách bên Mẽo là mất cả tháng lương, trừ Basic thì sách có sẵn của cơ quan (*). Nhưng chắc nhờ mất của như vậy mà tôi tiếc, đọc ngấu chúng không sót một chữ. Lúc qua C/C++ và SQL thì dẫu đã có căn bản tôi vẫn đọc sách và tài liệu đầy đủ.

Máy tính bây giờ không đắt. Sách vở cũng tương đối rẻ. Hỏi thì có bao nhiêu cửa để hỏi.
Thử nghiệm thì chỉ tốn tiền điện. Bảo không có điều kiện để học là đồ lười.

Lúc học, tôi cũng đang đi làm. Lý do duy nhất ôi có nhiều thì giờ để học hơn các bạn trẻ bây giờ là hồi ấy không có điện thoại cho nên tôi không bị mất thì giờ chít chát.

(*) Basic là ngôn ngữ đi theo máy cho nên lúc bán máy, quyển sách Basic đi kèm.
 
Upvote 0
Mấy chục năm trước, tôi bắt đầu làm việc với Fortran 4 và BASIC, sau đó qua Fortran 77 và Pascal, nhờ người mua giùm mỗi quyển sách bên Mẽo là mất cả tháng lương, trừ Basic thì sách có sẵn của cơ quan (*). Nhưng chắc nhờ mất của như vậy mà tôi tiếc, đọc ngấu chúng không sót một chữ. Lúc qua C/C++ và SQL thì dẫu đã có căn bản tôi vẫn đọc sách và tài liệu đầy đủ.

Máy tính bây giờ không đắt. Sách vở cũng tương đối rẻ. Hỏi thì có bao nhiêu cửa để hỏi.
Thử nghiệm thì chỉ tốn tiền điện. Bảo không có điều kiện để học là đồ lười.

Lúc học, tôi cũng đang đi làm. Lý do duy nhất ôi có nhiều thì giờ để học hơn các bạn trẻ bây giờ là hồi ấy không có điện thoại cho nên tôi không bị mất thì giờ chít chát.

(*) Basic là ngôn ngữ đi theo máy cho nên lúc bán máy, quyển sách Basic đi kèm.
Và giờ có forum hỏi là có người dâng con cá luôn, lo chi việc sắm và mua cần câu và học cách câu nữa
 
Upvote 0
Và giờ có forum hỏi là có người dâng con cá luôn, lo chi việc sắm và mua cần câu và học cách câu nữa
Tôi nói cho cái người nêu câu "không có điều kiện học".
Mà sao cái bài đó đâu rồi. Chắc tôi đọc nhầm thớt.

Nhận con cá lóc (cá quả) còn phải học đánh vảy. Ở đây người ta nhận tô canh chua luôn cho tiện. Chưa kể vừa ăn vừa chửi ngừoi nấu làm mất cái đùm ruột.
 
Upvote 0
Hình 1: Lấy 9 query từ excel, xoá bớt cột, và thêm cột SanPham cho từng query

View attachment 232663

Hình 2: Append và thêm cột Index

View attachment 232665

Hình 3: Kết quả (chưa có cột tháng năm, muốn có thì thêm vào 9 sheet và điền vào sẵn)

View attachment 232666

Mỗi tháng nhấn refresh 1 lần:

View attachment 232667
Cảm ơn anh nhiều ạ. Để em thử xem có gì không hiểu nhờ anh hỗ trợ tiếp. Tuy nhiên, em vẫn muốn xử lý thêm bằng vba để học hỏi thêm.
 
Upvote 0
... Tuy nhiên, em vẫn muốn xử lý thêm bằng vba để học hỏi thêm.
Có chắc muốn "học hỏi thêm" không?
Code tổng hợp dữ liệu ở đây có cả đôngs. Tải về thử, và cho biết những chỗ nào không hợp với trường hợp của mình. Hy vọng sẽ có người chỉ cho cách sửa.
Như vậy mới là học chứ. Xin code từ a đến z chỉ là tham khảo thôi.

Nêuds ngày bạn vào diễn đàn là 15 tuổi thì bây giờ bạn đã 28. Chẳng lẽ cứ muốn học bài kiểu lấy từng câu từng chữ như bài cô giáo tiểu học?
 
Upvote 0
Có chắc muốn "học hỏi thêm" không?
Code tổng hợp dữ liệu ở đây có cả đôngs. Tải về thử, và cho biết những chỗ nào không hợp với trường hợp của mình. Hy vọng sẽ có người chỉ cho cách sửa.
Như vậy mới là học chứ. Xin code từ a đến z chỉ là tham khảo thôi.
Code tổng hợp dữ liệu từ nhiều file có cùng cấu trúc dữ liệu và dữ liệu chỉ nằm trong 1 sheet thì em có biết và đã tham khảo, còn bài toán ở đây lại là các file dữ liệu không cùng cấu trúc. Bác có code nào tương tự bào toán em nêu thì gửi giúp em đường link (em có search rồi nhưng không ra). Thanks bác!
 
Upvote 0
Ở diễn đàn này ai cũng biết tôi khong làm giùm từ a đến z đâu.
Bạn muốn học thì phải cho biết học đến đâu rồi, và bí chỗ nào.

Nếu bạn đã tìm nhiều bài rồi thì đưa code gần nhất với vấn đề của mình lên, và cho biết theo bạn thì chỗ nào nên sửa.
Tôi sẽ cho biết đúng hay không và sửa thế nào.
 
Upvote 0
Em đang làm file tổng hợp copy dữ liệu từ file khác, code như sau:

Sub import_sanluong()
Dim wb As String
Dim sh As Worksheet
Dim lr As Integer
Dim lr1 As Integer
Dim lr2 As Integer
Dim ws As Worksheet
Dim str As String

Set sh = Sheet1
Application.ScreenUpdating = False
str = InputBox("Nhap thang du lieu", "ABC")
If str = "" Then: Exit Sub
wb = Application.GetOpenFilename("excel file(*xls.*),*.xls")
With Workbooks.Open(wb)
lr = Cells(Rows.Count, 1).End(3).Row
Sheets("DD").Range("O2:O" & lr).Copy
lr1 = sh.Cells(Rows.Count, 2).End(3).Row
sh.Range("B" & lr1 + 1).PasteSpecial
Sheets("DD").Range("N2:N" & lr).Copy
sh.Range("C" & lr1 + 1).PasteSpecial
Sheets("DD").Range("M2:M" & lr).Copy
sh.Range("D" & lr1 + 1).PasteSpecial
Sheets("DD").Range("B2:B" & lr).Copy
sh.Range("E" & lr1 + 1).PasteSpecial
Sheets("DD").Range("C2:C" & lr).Copy
sh.Range("F" & lr1 + 1).PasteSpecial
Sheets("DD").Range("G2:G" & lr).Copy
sh.Range("G" & lr1 + 1).PasteSpecial
Sheets("DD").Range("Q2:Q" & lr).Copy
sh.Range("I" & lr1 + 1).PasteSpecial
End With

lr2 = sh.Cells(Rows.Count, 6).End(3).Row
For I = 5 To lr2
If sh.Cells(I, 10) = "" And sh.Cells(I, 3) <> "" Then
sh.Cells(I, 10).Value = str
sh.Cells(I, 8) = "DT 1"
End If
Next

Application.ScreenUpdating = False
Workbooks.Open(wb).Close

End Sub
Em muốn hỏi các anh chị:
- Hiện tại file cần lấy dữ liệu đang có 1 sheet, nếu thêm 1 sheets khác thì kết quả chạy ra thiếu, chỉ được một số hàng.
- Trường hợp trong file cần lấy dữ liệu có nhiều hơn 1 sheet, thì thêm code lặp qua các sheet để copy dữ liệu tại từng sheet như thế nào ạ
Em cảm ơn
 
Upvote 0
Web KT

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

Back
Top Bottom