Lấy dữ liệu xuất báo cáo : xuất - nhập - tồn với nhiều điều kiện

Liên hệ QC

soledad_90

Thành viên thường trực
Tham gia
12/1/10
Bài viết
253
Được thích
47
Giới tính
Nam
Em xin chào diễn đàn .
Em có file đính kèm với sheet BC XNT cần giúp để chạy code ra báo cáo với các điều kiện có thể hiện trong file.
Tại sheet BC XNT cần lấy và tham chiếu từ 2 sheet Data và sheet SPG tong hop
Với sheet data cần 4 điều kiện ràng buộc là quốc gia / đơn hàng / mã hàng / màu sắc.
1655515725100.png
1655515749895.png
Với sheet SPG tonghop cần 3 điều kiện ràng buộc là Đơn hàng / mã hàng / màu sắc
1655515916046.png
Em cảm ơn ạ.
 

File đính kèm

  • 220618_DATA baocao.xlsx
    1.8 MB · Đọc: 12
Em xin chào diễn đàn .
Em có file đính kèm với sheet BC XNT cần giúp để chạy code ra báo cáo với các điều kiện có thể hiện trong file.
Tại sheet BC XNT cần lấy và tham chiếu từ 2 sheet Data và sheet SPG tong hop
Với sheet data cần 4 điều kiện ràng buộc là quốc gia / đơn hàng / mã hàng / màu sắc.
View attachment 277507
View attachment 277508
Với sheet SPG tonghop cần 3 điều kiện ràng buộc là Đơn hàng / mã hàng / màu sắc
View attachment 277509
Em cảm ơn ạ.
Trong khi chờ các giải pháp khác, Hãy thử code cổ lỗ sỹ sau, biết đâu đúng ý.
Mã:
Option Explicit

Sub TongHop()
Dim i&, j&, t&, k&, LR&, LR1&, R&, R1&, sp&, p&
Dim Dic As Object, Key, DicSPG As Object, Temp
Dim Arr(), Arr1(), Res()
Dim Sh As Worksheet, Ws As Worksheet
Set Sh = Sheets("Data")
LR = Sh.Cells(Rows.Count, 1).End(3).Row
Arr = Sh.Range("A6:BC" & LR).Value: R = UBound(Arr)
Set Ws = Sheets("SPG tong hop")
LR1 = Ws.Cells(Rows.Count, 8).End(3).Row
Arr1 = Ws.Range("A10:N" & LR1).Value: R1 = UBound(Arr)
Set DicSPG = CreateObject("Scripting.Dictionary")
ReDim SPG(1 To R1, 1 To 2)
For i = 1 To R1
    Key = Arr1(i, 8) & "|" & Arr1(i, 12) & "|" & Arr1(i, 13)
    If Not DicSPG.Exists(Key) Then
        sp = sp + 1: DicSPG.Add (Key), sp
            SPG(sp, 1) = Key
            SPG(sp, 2) = Arr1(i, 14)
    Else
        p = DicSPG.Item(Key)
            SPG(p, 2) = SPG(p, 2) + Arr1(i, 14)
    End If
Next i
            
Set Dic = CreateObject("Scripting.Dictionary")
ReDim Res(1 To UBound(Arr), 1 To 11)
For i = 1 To R
    Key = Arr(i, 10) & "|" & Arr(i, 11) & "|" & Arr(i, 12) & "|" & Arr(i, 13)
    Temp = Arr(i, 11) & "|" & Arr(i, 12) & "|" & Arr(i, 13)
    If Not Dic.Exists(Key) Then
        t = t + 1: Dic.Add (Key), t
            Res(t, 1) = Arr(i, 10)
            Res(t, 2) = Arr(i, 11)
            Res(t, 3) = Arr(i, 12)
            Res(t, 4) = Arr(i, 13)
        If Arr(i, 2) = "TĐ" Then Res(t, 5) = Arr(i, 53)
        If Arr(i, 3) = "N" Then Res(t, 6) = Arr(i, 53)
        If Arr(i, 4) = "X" Then Res(t, 7) = Arr(i, 53)
            Res(t, 8) = Res(t, 5) + Res(t, 6) - Res(t, 7)
        If DicSPG.Exists(Temp) Then Res(t, 9) = SPG(DicSPG.Item(Temp), 2)
            Res(t, 10) = Arr(i, 5)
            Res(t, 11) = Arr(i, 55)
    Else
        k = Dic.Item(Key)
        If Arr(i, 2) = "TĐ" Then Res(k, 5) = Res(k, 5) + Arr(i, 53)
        If Arr(i, 3) = "N" Then Res(k, 6) = Res(k, 6) + Arr(i, 53)
        If Arr(i, 4) = "X" Then Res(k, 7) = Res(k, 7) + Arr(i, 53)
            Res(k, 8) = Res(k, 5) + Res(k, 6) - Res(k, 7)
    End If
Next i
If t Then
    Sheets("BC XNT").[B3].Resize(100000, 11).ClearContents
    Sheets("BC XNT").[B3].Resize(t, 11) = Res
End If
       Set Dic = Nothing: Set DicSPG = Nothing
MsgBox " Done"
            
End Sub
Nhấn vào mặt cười để nhận kết quả, Hãy kiểm tra và test lại.
Các vấn đề về định dạng, bạn tự làm
 

File đính kèm

  • 220618_DATA baocao(SoleDad_90-MrVanHuong).xlsm
    1.8 MB · Đọc: 11
Upvote 0
Góp vui thêm 1 cách khác...
Không biết đúng sai nên thử trước 50 % ...
Nếu thấy đúng thì cứ thế phát huy ...
Thử click nút Clear , RUN ...
 

File đính kèm

  • 220618_DATA baocao333.xlsm
    1.8 MB · Đọc: 11
Upvote 0
Trong khi chờ các giải pháp khác, Hãy thử code cổ lỗ sỹ sau, biết đâu đúng ý.
Mã:
Option Explicit

Sub TongHop()
Dim i&, j&, t&, k&, LR&, LR1&, R&, R1&, sp&, p&
Dim Dic As Object, Key, DicSPG As Object, Temp
Dim Arr(), Arr1(), Res()
Dim Sh As Worksheet, Ws As Worksheet
Set Sh = Sheets("Data")
LR = Sh.Cells(Rows.Count, 1).End(3).Row
Arr = Sh.Range("A6:BC" & LR).Value: R = UBound(Arr)
Set Ws = Sheets("SPG tong hop")
LR1 = Ws.Cells(Rows.Count, 8).End(3).Row
Arr1 = Ws.Range("A10:N" & LR1).Value: R1 = UBound(Arr)
Set DicSPG = CreateObject("Scripting.Dictionary")
ReDim SPG(1 To R1, 1 To 2)
For i = 1 To R1
    Key = Arr1(i, 8) & "|" & Arr1(i, 12) & "|" & Arr1(i, 13)
    If Not DicSPG.Exists(Key) Then
        sp = sp + 1: DicSPG.Add (Key), sp
            SPG(sp, 1) = Key
            SPG(sp, 2) = Arr1(i, 14)
    Else
        p = DicSPG.Item(Key)
            SPG(p, 2) = SPG(p, 2) + Arr1(i, 14)
    End If
Next i
           
Set Dic = CreateObject("Scripting.Dictionary")
ReDim Res(1 To UBound(Arr), 1 To 11)
For i = 1 To R
    Key = Arr(i, 10) & "|" & Arr(i, 11) & "|" & Arr(i, 12) & "|" & Arr(i, 13)
    Temp = Arr(i, 11) & "|" & Arr(i, 12) & "|" & Arr(i, 13)
    If Not Dic.Exists(Key) Then
        t = t + 1: Dic.Add (Key), t
            Res(t, 1) = Arr(i, 10)
            Res(t, 2) = Arr(i, 11)
            Res(t, 3) = Arr(i, 12)
            Res(t, 4) = Arr(i, 13)
        If Arr(i, 2) = "TĐ" Then Res(t, 5) = Arr(i, 53)
        If Arr(i, 3) = "N" Then Res(t, 6) = Arr(i, 53)
        If Arr(i, 4) = "X" Then Res(t, 7) = Arr(i, 53)
            Res(t, 8) = Res(t, 5) + Res(t, 6) - Res(t, 7)
        If DicSPG.Exists(Temp) Then Res(t, 9) = SPG(DicSPG.Item(Temp), 2)
            Res(t, 10) = Arr(i, 5)
            Res(t, 11) = Arr(i, 55)
    Else
        k = Dic.Item(Key)
        If Arr(i, 2) = "TĐ" Then Res(k, 5) = Res(k, 5) + Arr(i, 53)
        If Arr(i, 3) = "N" Then Res(k, 6) = Res(k, 6) + Arr(i, 53)
        If Arr(i, 4) = "X" Then Res(k, 7) = Res(k, 7) + Arr(i, 53)
            Res(k, 8) = Res(k, 5) + Res(k, 6) - Res(k, 7)
    End If
Next i
If t Then
    Sheets("BC XNT").[B3].Resize(100000, 11).ClearContents
    Sheets("BC XNT").[B3].Resize(t, 11) = Res
End If
       Set Dic = Nothing: Set DicSPG = Nothing
MsgBox " Done"
           
End Sub
Nhấn vào mặt cười để nhận kết quả, Hãy kiểm tra và test lại.
Các vấn đề về định dạng, bạn tự làm
1655601695047.png

Em cảm ơn anh đã giúp đỡ em trong nhiều toppic của em ạ.
Em đã đọc và kiểm tra file anh gửi lại ạ,
Ở đây số liệu tồn đầu code chưa cho trả về kết quả,
- Dữ liệu xuất chưa được trả về đầy đủ : VD tổng xuất trong sh Data là 62.707 đôi / 5.272 thùng và em có lấy VD cụ thể cho lô hàng Chile số vận chuyển tổng xuất là 7.725 đôi / 644 thùng
- Dữ liệu số lượng đơn đặt hàng cũng chưa được hiển thị hết ạ,1655602097917.png
- 2 cột Ngày xuất kho và số phương tiện vận chuyển code cho hiển thị đúng rồi ạ.
Anh kiểm tra thêm và cho em hướng dẫn để code cho hiển thị kết quả đủ hết ạ.
Em cảm ơn.
Bài đã được tự động gộp:

Góp vui thêm 1 cách khác...
Không biết đúng sai nên thử trước 50 % ...
Nếu thấy đúng thì cứ thế phát huy ...
Thử click nút Clear , RUN ...
Cảm ơn sự giúp đỡ của bạn nhé.
Code của bạn cho kết quả còn thiếu các dữ liệu ở cột E'(màu sắc) và J( số lượng đơn đặt hàng gốc)/K(ngày xuất kho)/L(số phương tiện vận chuyển)
1655602984329.png
1655603008359.png
Mình có lấy VD cụ thể lô hàng :
Chile243940HS9111LW
Lô này sẽ có nhiều màu sắc. Code chỉ hiển thị đơn hàng và mã hàng : nên hiển thị chưa đúng ở cột nhập kho
Và lô này sẽ tách ra 2 số phương tiện vận chuyển khác nhau.
Mong hồi âm từ bạn cho code hiển thị kết quả như mong muốn ạ.
Cảm ơn nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
View attachment 277543

Em cảm ơn anh đã giúp đỡ em trong nhiều toppic của em ạ.
Em đã đọc và kiểm tra file anh gửi lại ạ,
Ở đây số liệu tồn đầu code chưa cho trả về kết quả,
- Dữ liệu xuất chưa được trả về đầy đủ : VD tổng xuất trong sh Data là 62.707 đôi / 5.272 thùng và em có lấy VD cụ thể cho lô hàng Chile số vận chuyển tổng xuất là 7.725 đôi / 644 thùng
- Dữ liệu số lượng đơn đặt hàng cũng chưa được hiển thị hết ạ,View attachment 277544
- 2 cột Ngày xuất kho và số phương tiện vận chuyển code cho hiển thị đúng rồi ạ.
Anh kiểm tra thêm và cho em hướng dẫn để code cho hiển thị kết quả đủ hết ạ.
Em cảm ơn.
Bài đã được tự động gộp:


Cảm ơn sự giúp đỡ của bạn nhé.
Code của bạn cho kết quả còn thiếu các dữ liệu ở cột E'(màu sắc) và J( số lượng đơn đặt hàng gốc)/K(ngày xuất kho)/L(số phương tiện vận chuyển)
View attachment 277545
View attachment 277546
Mình có lấy VD cụ thể lô hàng :
Chile243940HS9111LW
Lô này sẽ có nhiều màu sắc. Code chỉ hiển thị đơn hàng và mã hàng : nên hiển thị chưa đúng ở cột nhập kho
Và lô này sẽ tách ra 2 số phương tiện vận chuyển khác nhau.
Mong hồi âm từ bạn cho code hiển thị kết quả như mong muốn ạ.
Cảm ơn nhé.
Đã chỉnh sửa lại code, bổ xung thêm phần sắp xếp tên quốc gia theo A=>Z
 

File đính kèm

  • 220618_DATA baocao(SoleDad_90-MrVanHuong).xlsm
    1.9 MB · Đọc: 14
Upvote 0
Tiếp phần còn lại nhưng không thể kiểm tra đã đúng chưa?...
Hình như cấu trúc file có gì đó sai sai ...
 

File đính kèm

  • 220618_DATA baocao444.xlsm
    1.9 MB · Đọc: 6
Upvote 0
Đã chỉnh sửa lại code, bổ xung thêm phần sắp xếp tên quốc gia theo A=>Z
Em cảm ơn sự giúp đỡ từ anh ạ.
Code còn 1 trường dữ liệu Tồn đầu kỳ (cột F) chưa được thể hiện ạ ==> có kết quả tồn cuối bị âm ạ.
1655615475321.pngMong sự giúp đỡ thêm từ anh cho cột này ạ.
Bài đã được tự động gộp:

Tiếp phần còn lại nhưng không thể kiểm tra đã đúng chưa?...
Hình như
cấu trúc file có gì đó sai sai
Chỗ này mình xin nhận góp ý cụ thể hơn ạ, để mình có thể thay đổi chỉnh sửa ạ
...
Cảm ơn sự giúp đỡ từ bạn nhiều.
Code vẫn chưa thể hiện kết quả như mong muốn . Tại cột màu sắc (E) , cột số lượng đơn đặt hàng (J) , cột ngày xuất hàng, cột số phương tiện ,vẫn chưa được hiển thị hết giá trị.1655615978164.png
 
Lần chỉnh sửa cuối:
Upvote 0
Em cảm ơn sự giúp đỡ từ anh ạ.
Code còn 1 trường dữ liệu Tồn đầu kỳ (cột F) chưa được thể hiện ạ ==> có kết quả tồn cuối bị âm ạ.
View attachment 277551Mong sự giúp đỡ thêm từ anh cho cột này ạ.
Bài đã được tự động gộp:


Cảm ơn sự giúp đỡ từ bạn nhiều.
Code vẫn chưa thể hiện kết quả như mong muốn . Tại cột màu sắc (E) , cột số lượng đơn đặt hàng (J) , cột ngày xuất hàng, cột số phương tiện ,vẫn chưa được hiển thị hết giá trị.View attachment 277552
Bạn xem lại, máy mình chạy ra kết quả nhu hình.
1655629044499.png
 
Upvote 0
...Code của bạn cho kết quả còn thiếu các dữ liệu ở cột E'(màu sắc)...

Format lại 4 cột về TEXT rồi RUN lại xem sao ... ?
 
Upvote 0
Bạn xem lại, máy mình chạy ra kết quả nhu hình.
View attachment 277562
Em cảm ơn anh.
Em xin gửi lại file ( em có chỉnh định dạng về Text cho 4 cột Quốc gia/đơn hàng/mã hàng/màu tại sheet Data - theo như bạn @Tống Văn Đệ chỉ dẫn ) nhưng kết quả tồn đầu vẫn không được hiển thị ạ.
Anh koi file em gửi lại ạ.
Em dùng Win 10 : Office 2019 ạ.
Bài đã được tự động gộp:

...Code của bạn cho kết quả còn thiếu các dữ liệu ở cột E'(màu sắc)...

Format lại 4 cột về TEXT rồi RUN lại xem sao ... ?
Cảm ơn thông tin từ bạn : sau khi chuyển 4 cột Quốc gia/đơn hàng/mã hàng/màu tại sheet Data . Chạy lại code, code đã cho kết quả đúng như yêu cầu rồi .
1655687246499.png
Tại dòng số 3 và 4 có công thức : mình xin hỏi 2 dòng này và công thức này để kiểm tra thành phần nào vậy ? có thể xóa đi được không ? Nếu xóa đi có ảnh hưởng tới code kết quả không ? bạn hướng dẫn thêm nhé.
Cảm ơn bạn nhiều.
 

File đính kèm

  • 220618_DATA baocao(SoleDad_90-MrVanHuong).xlsm
    1.9 MB · Đọc: 6
Upvote 0
Em cảm ơn anh.
Em xin gửi lại file ( em có chỉnh định dạng về Text cho 4 cột Quốc gia/đơn hàng/mã hàng/màu tại sheet Data - theo như bạn @Tống Văn Đệ chỉ dẫn ) nhưng kết quả tồn đầu vẫn không được hiển thị ạ.
Anh koi file em gửi lại ạ.
Em dùng Win 10 : Office 2019 ạ.
Tôi thật không hiểu bạn là thế nào nữa? bạn có đúng tên ngoài đời là Văn Hướng không?
File bạn gửi (cái file mà bạn đã sửa lại 4 cột cho về dạng text ấy -theo đề xuất của bạn Đệ) ,tôi chạy trên máy tôi cho ra kết quả đúng ( tôi đã kiểm tra lại so với dữ liệu Sh Data), mà không hiểu sao bạn cứ nói là không ra kết quả đủ (thế chẳng hóa ra code kén chọn dữ liệu - thích thì cho kết quả, loại không thích thì không).
Bạn dùng code của bạn Đệ đã cho ra kết quả như ý muốn thì cú tiếp tục theo và cũng nói rõ để tôi biết và dừng lại không làm mất thời gian vô ích của nhau nữa, chứ đùng lấy file chạy code của bạn khác rồi nói là code chạy không đúng.
Mà câu hỏi của tôi Bạn có đúng tên ngoài đời là Cao văn Hướng không? Nhớ trả lời cho tôi biết nhé.
1655691121345.png
 

File đính kèm

  • 220618_DATA baocao(SoleDad_90-MrVanHuong) (1).xlsm
    1.8 MB · Đọc: 28
Upvote 0
Tôi thật không hiểu bạn là thế nào nữa? bạn có đúng tên ngoài đời là Văn Hướng không?
File bạn gửi (cái file mà bạn đã sửa lại 4 cột cho về dạng text ấy -theo đề xuất của bạn Đệ) ,tôi chạy trên máy tôi cho ra kết quả đúng ( tôi đã kiểm tra lại so với dữ liệu Sh Data), mà không hiểu sao bạn cứ nói là không ra kết quả đủ (thế chẳng hóa ra code kén chọn dữ liệu - thích thì cho kết quả, loại không thích thì không).
Bạn dùng code của bạn Đệ đã cho ra kết quả như ý muốn thì cú tiếp tục theo và cũng nói rõ để tôi biết và dừng lại không làm mất thời gian vô ích của nhau nữa, chứ đùng lấy file chạy code của bạn khác rồi nói là code chạy không đúng.
Mà câu hỏi của tôi Bạn có đúng tên ngoài đời là Cao văn Hướng không? Nhớ trả lời cho tôi biết nhé.
View attachment 277593
Em cảm ơn anh vì đã giúp đỡ em ở các Topic : Đúng tên của em là Cao Văn Hưởng
Ở đây em hoàn toàn không có ý sai lệnh gì cả.
Em có quay video màn hình lại : từ file của anh gửi , code từ file của anh và chạy code để xác thức lại ạ.
( em có lò mò và upload dc cái video nên youtube , anh koi trên này ạ )
Mã:
https://youtu.be/nvXWhMS060c
 
Upvote 0
Em cảm ơn anh vì đã giúp đỡ em ở các Topic : Đúng tên của em là Cao Văn Hưởng
Ở đây em hoàn toàn không có ý sai lệnh gì cả.
Em có quay video màn hình lại : từ file của anh gửi , code từ file của anh và chạy code để xác thức lại ạ.
( em có lò mò và upload dc cái video nên youtube , anh koi trên này ạ )
Mã:
https://youtu.be/nvXWhMS060c
Tôi hỏi thế để biết là tôi đoán không sai. chúng ta đã có duyên nợ với nhau trên zalo rồi mà, nếu không nhầm thì bạn vẫn còn nợ tôi câu hỏi trên zalo. Thực lòng là tôi không còn hứng thú và lý do gì để quan tâm cái video bạn gửi để làm gì.
Chỉ vì bạn nói code chạy cho ra kết quả không hết mà tôi đã phải mất rất nhiều công sức và thời gian để kiểm tra lại từng tý từng tý một từ thuật toán đến code (từng dòng một) xem có sai có thiếu ở đâu không. và phải dùng cả hàm của excel để kiểm tra lại dữ liệu được tổng hợp xem có đúng không).
Giờ thì tôi cũng đã hiểu ra 1 vài điều đó là tại sao bài của bạn trên diễn đàn này chậm được trả lời và được ít thành viên tham gia trợ giúp, và câu hỏi của và hướng dẫn của tôi trên zalo gửi bạn lại nhận được sự thờ ơ đến thế. Mặc dù trợ giúp cho bạn là hoàn toàn vô tư, nhưng đã bao giờ bạn đặt mình vào ví trí người trợ giúp chưa?
 
Upvote 0
Tôi hỏi thế để biết là tôi đoán không sai. chúng ta đã có duyên nợ với nhau trên zalo rồi mà, nếu không nhầm thì bạn vẫn còn nợ tôi câu hỏi trên zalo. Thực lòng là tôi không còn hứng thú và lý do gì để quan tâm cái video bạn gửi để làm gì.
Chỉ vì bạn nói code chạy cho ra kết quả không hết mà tôi đã phải mất rất nhiều công sức và thời gian để kiểm tra lại từng tý từng tý một từ thuật toán đến code (từng dòng một) xem có sai có thiếu ở đâu không. và phải dùng cả hàm của excel để kiểm tra lại dữ liệu được tổng hợp xem có đúng không).
Giờ thì tôi cũng đã hiểu ra 1 vài điều đó là tại sao bài của bạn trên diễn đàn này chậm được trả lời và được ít thành viên tham gia trợ giúp, và câu hỏi của và hướng dẫn của tôi trên zalo gửi bạn lại nhận được sự thờ ơ đến thế. Mặc dù trợ giúp cho bạn là hoàn toàn vô tư, nhưng đã bao giờ bạn đặt mình vào ví trí người trợ giúp chưa?
Em thực sự rất biết ơn anh và nhưng người đã giúp đỡ mình trên diễn đàn này ạ.
Những phản hồi và cách diễn giải trình bày còn chưa được kịp thời, đúng và đầy đủ. Làm cho những thành viên giúp em phải bỏ nhiều công sức và năng lượng vào đó. em rất xin lỗi ạ.
 
Upvote 0
Web KT

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

Back
Top Bottom