[VBA] Xin giúp tổng hợp dữ liệu từ các file mua hàng (3 người xem)

  • Thread starter Thread starter 881516
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

881516

Thành viên chính thức
Tham gia
8/6/16
Bài viết
80
Được thích
6
Dear anh chị em.
Em có 1 file Import data và 2 file Source 1, 2, cấu trúc như dưới ạ

upload_2017-12-4_10-40-25.png

Nhờ a chị làm giúp e 1 macro để tổng hợp dữ liệu mua hàng từ 2 file source vào file data để được như dưới này ạ:

upload_2017-12-4_10-40-36.png

Em cũng đang học từng dòng code cơ bản của vba, e biết hỏi luôn như này là tham. Kính mong anh chị giúp đỡ. e ko đòi trong hôm nay có luôn, mà ai rảnh thì giúp e
Xin hậu tạ 1 mã card điện thoại 50k nếu được giúp đỡ ạ.

Bài này em gặp 1 vấn đề khó ở chỗ: 1 hóa đơn có thể có nhiều mã hàng, như 2 file trên là 3 và 2 mã hàng từng hóa đơn.

Nếu file có 2 mã hàng, thông tin cuối cùng sẽ nằm từ dòng 12 (B12:G15)
Nếu file có 3 mã hàng, thông tin cuối cùng sẽ nằm từ dòng 17(B17:G21)
Nếu file có n mã hàng, thông tin cuối cùng sẽ nằm từ dòng 5*n+2 (cột B:G tương ứng)

Thanks ACE
 

File đính kèm

code két bèo nhèo dớt giá quá :p:D
 
Dear anh chị em.
Em có 1 file Import data và 2 file Source 1, 2, cấu trúc như dưới ạ

View attachment 187625

Nhờ a chị làm giúp e 1 macro để tổng hợp dữ liệu mua hàng từ 2 file source vào file data để được như dưới này ạ:

View attachment 187626

Em cũng đang học từng dòng code cơ bản của vba, e biết hỏi luôn như này là tham. Kính mong anh chị giúp đỡ. e ko đòi trong hôm nay có luôn, mà ai rảnh thì giúp e
Xin hậu tạ 1 mã card điện thoại 50k nếu được giúp đỡ ạ.

Bài này em gặp 1 vấn đề khó ở chỗ: 1 hóa đơn có thể có nhiều mã hàng, như 2 file trên là 3 và 2 mã hàng từng hóa đơn.

Nếu file có 2 mã hàng, thông tin cuối cùng sẽ nằm từ dòng 12 (B12:G15)
Nếu file có 3 mã hàng, thông tin cuối cùng sẽ nằm từ dòng 17(B17:G21)
Nếu file có n mã hàng, thông tin cuối cùng sẽ nằm từ dòng 5*n+2 (cột B:G tương ứng)

Thanks ACE
Trên diễn đàn GPE không ai giúp nhau vì được hậu tạ đâu bạn ạ.
Lần sau bạn lưu ý khi đăng bài, đừng có suy nghĩ hay thể hiện như vậy.
Mã:
Sub GPE()
    Dim sArr(), dArr(1 To 100000, 1 To 11)
    Dim I As Long, J As Long, K As Long, lR As Long
    Dim Wb As Workbook, Ws As Worksheet, Item
    
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Filters.Add "Microsoft Excel Files", "*.xls*", 1
        
        If Not .Show = -1 Then MsgBox "Ban chua chon file", vbCritical, "GPE": Exit Sub
        
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False
        For Each Item In .SelectedItems
            Set Wb = Workbooks.Open(Item, UpdateLinks:=False)
            For Each Ws In Wb.Sheets
                If Ws.CodeName = "Sheet1" Then
                    lR = Ws.Range("G" & Rows.Count).End(xlUp).Row
                    sArr = Range("A1").Resize(lR, 7)
                    For I = 7 To lR
                        If Len(Trim(sArr(I, 2))) Then
                            K = K + 1
                            dArr(K, 1) = sArr(1, 2): dArr(K, 2) = sArr(2, 2)
                            dArr(K, 3) = sArr(3, 2): dArr(K, 4) = sArr(4, 2): dArr(K, 5) = sArr(5, 2)
                            dArr(K, 6) = sArr(I, 4): dArr(K, 7) = sArr(I + 1, 4)
                            dArr(K, 8) = sArr(I, 7): dArr(K, 9) = sArr(I + 1, 7)
                            dArr(K, 10) = sArr(I + 2, 7): dArr(K, 11) = sArr(I + 3, 7)
                        End If
                    Next I
                End If
            Next Ws
            Wb.Close False
        Next Item
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
    End With
    Sheet1.Range("A2").Resize(K, 11) = dArr
    MsgBox "Done", vbInformation, "GPE"
End Sub
 
Hi cả nhà,
càm ơn mọi người rất nhiều, thật sự xin lỗi nếu những gì mình viết khiến mọi ng nghĩ mình thể hiện. mình xin rút kinh nghiệm trong các bài viết sau.
@vanthinh3101 bài của a sau khi e chạy code thì lỗi như này ạ, ko biết e có quên chưa enable mục nào ko
upload_2017-12-4_12-7-1.pngupload_2017-12-4_12-12-35.png


@hpkhuong code của a e chạy ok.
A xem giúp e thêm phần này ạ:
Giả sử sau khi nhập được 2 file excel hóa đơn, em lưu 2 file đó vào 1 thư mục (để đánh dấu là đã nhập dữ liệu từ các file trong thư mục này)
Tiếp theo e nhập thêm 3 file nữa thì các dữ liệu từ file tổng hợp sẽ làm mới theo 3 file mới đó.
Em muốn để nó tiếp tục điền vào các dòng tiếp theo ạ.


Thực ra file trên là file e lấy ví dụ để e thay đổi lại một số dòng lệnh đối với file của e (e up trực tiếp lên ko tiện)
File của e vị trí các ô cần lấy dữ liệu rất khác ạ, e ko biết sửa lại các dòng nào trong code của mọi người để chạy đc trên file của e :(

File của e:
- dữ liệu cả file nằm trên cột A:AJ1
- Mã nhà cung cấp (NCC): E4
- Loại hình nhập khẩu: P6
- Tên NCC: H23
- Số hóa đơn: J41
- Ngày hóa đơn: J43


Đối với mặt hàng 1:
- Mã hàng: G160
- Tên hàng: G161
- Số lượng: V164
- Đơn giá: V166
- Tiền tệ: AC166
- Thành tiền: I166

Mặt hàng 2 thì số cột ko đổi, dòng cộng thêm 73 vào ạ. (mã hàng G233, Tên hàng G234, ...)
Tương tự như vậy đến khi hết mã hàng
 
Dữ liệu có thể là giả lập.
Nhưng format file phải là thật.
Bạn đưa file 1 nơi, giờ bảo thật của em thế này...thì xin báy bay....

Chừng nào đưa file thật lên đây rồi tính tiếp.
Gửi bạn nhé. :( nhìn cái file này hoa mắt thật, mình tô màu các ô cần lấy dữ liệu rồi đó
Chú thích như trên nhé, cảm ơn bạn rất nhiều

- Mã nhà cung cấp (NCC): E4
- Loại hình nhập khẩu: P6
- Tên NCC: H23
- Số hóa đơn: J41
- Ngày hóa đơn: J43


Đối với mặt hàng 1:
- Mã hàng: G160
- Tên hàng: G161
- Số lượng: V164
- Đơn giá: V166
- Tiền tệ: AC166
- Thành tiền: I166

Mặt hàng 2 thì số cột ko đổi, dòng cộng thêm 73 vào ạ. (mã hàng G233, Tên hàng G234, ...)
Tương tự như vậy đến khi hết mã hàng
 

File đính kèm

Lần chỉnh sửa cuối:
Dữ liệu có thể là giả lập.
Nhưng format file phải là thật.
Bạn đưa file 1 nơi, giờ bảo thật của em thế này...thì xin báy bay....

Chừng nào đưa file thật lên đây rồi tính tiếp.
:D lúc đầu mình nghĩ đoạn code này là copy dữ liệu ở các ô để điền vào tương ứng, nhưng xem code mọi ng viết thì hình như mọi ng ko dùng cách này hay sao í
 
Đẹp quá rồi bạn ạ :( nhưng nhờ bạn giúp mình 1 đoạn code nhỏ để sau khi mình nhập thêm dữ liệu từ file mới sẽ ko bị mất dữ liệu ở file cũ đc ko
Như hiện tại, nếu đã import data từ 2 file, sau đó tiếp tục import 3 file mới thì dữ liệu của 2 file cũ bị mất đi luôn. Mình muốn thêm dữ liệu nào nó sẽ tự điền vào các dòng tiếp theo luôn.
Thanks bạn nhiều
 
Cảm ơn bạn rất nhiều.
Mình muốn hỏi thêm ko liên quan chút đc ko.
Mình newbie, mới mò mẫm về VBA được 2-3 buổi, chủ yếu là tự xem tự học qua youtube.
Mình mới học đc đến các phần ghi macro và 1 số hàm đơn giản kiểu range, chọn ô bảng, hay tự đặt lệnh chạy công thức đơn giản.
Mình có xem kĩ code của bạn, mình tự hỏi ko biết code này là viết tay 100% hay có app hỗ trợ.
Vì mình thấy ở trên kia là bạn lấy cột C1:C làm gốc, cũng ko lấy dữ liệu theo ô kiểu A1, B56, X12 gì mà toàn là số thứ tự dòng cột kiểu (3,4), (41,8) cái này mình nghĩ chắc k phải là ngồi đếm xem ô này ở dòng cột bao nhiêu rùi :D

Mong được chỉ giáo :D
xin đc cảm ơn bạn lần nữa
 
Cảm ơn bạn rất nhiều.
Mình muốn hỏi thêm ko liên quan chút đc ko.
Mình newbie, mới mò mẫm về VBA được 2-3 buổi, chủ yếu là tự xem tự học qua youtube.
Mình mới học đc đến các phần ghi macro và 1 số hàm đơn giản kiểu range, chọn ô bảng, hay tự đặt lệnh chạy công thức đơn giản.
Mình có xem kĩ code của bạn, mình tự hỏi ko biết code này là viết tay 100% hay có app hỗ trợ.
Vì mình thấy ở trên kia là bạn lấy cột C1:C làm gốc, cũng ko lấy dữ liệu theo ô kiểu A1, B56, X12 gì mà toàn là số thứ tự dòng cột kiểu (3,4), (41,8) cái này mình nghĩ chắc k phải là ngồi đếm xem ô này ở dòng cột bao nhiêu rùi :D

Mong được chỉ giáo :D
xin đc cảm ơn bạn lần nữa
Bạn qua bài này: http://www.giaiphapexcel.com/diendan/threads/index-các-bài-viết-về-vba.129388/
Học thuộc 18 bài hướng dẫn thì Viết Code VBA đối với bạn như là viết "Văn" thôi :D:D:D
 
Bạn qua bài này: http://www.giaiphapexcel.com/diendan/threads/index-các-bài-viết-về-vba.129388/
Học thuộc 18 bài hướng dẫn thì Viết Code VBA đối với bạn như là viết "Văn" thôi :D:D:D
Trong 18 bài của tác giả Befaint, anh tin chắc rằng em chẳng thuộc bài nào, khà khà...
Vậy mà em vẫn viết Code như viết "văn" đó thôi ? Vậy bí quyết học là thế nào? Em bật mí tiếp cho bạn ấy đi.
 
Trong 18 bài của tác giả Befaint, anh tin chắc rằng em chẳng thuộc bài nào, khà khà...
Vậy mà em vẫn viết Code như viết "văn" đó thôi ? Vậy bí quyết học là thế nào? Em bật mí tiếp cho bạn ấy đi.
Hì hì. Em cũng đọc qua hết tất cả 18 bài. Nhưng đầu óc em nó chán quá do vậy em khi nào bí quá vào đọc lại... Xong lại quên anh ạ :p
 
:( tool hỗ trợ tên là gì vậy bạn, cho mình xin tên tool thôi đc ko
 
Web KT

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

Back
Top Bottom