Khớp sản phẩm với số lượng tương ứng

Liên hệ QC

hoangtuaotrang_hp_vn

Thành viên tiêu biểu
Tham gia
17/5/09
Bài viết
794
Được thích
667
anh/chị/em giúp em xử lý bảng bên trên bằng Power Query để khớp số lượng theo mã sản phẩm tương ứng để ra được bảng phía dưới với

xin cảm ơn mọi người.

1698611685849.png
 

File đính kèm

  • Khớp sp với số lượng tương ứng.xlsx
    14.6 KB · Đọc: 11
Hướng giải:
Merge column từng cột Sản phẩm+Số lượng,
Chọn Đơn hàng: Unpivot other columns,
Remove Attribute.
Split cột Value
 

File đính kèm

  • Khớp sp với số lượng tương ứng222.xlsx
    24.8 KB · Đọc: 5
Hướng giải:
Merge column từng cột Sản phẩm+Số lượng,
Chọn Đơn hàng: Unpivot other columns,
Remove Attribute.
Split cột Value
Không làm vậy được bạn, bán 1000 sản phẩm thì kết hợp ngất luôn. Tìm giải pháp khác đi
 

File đính kèm

  • Khớp sp với số lượng tương ứng.xlsx
    25.1 KB · Đọc: 13
...Không làm vậy được bạn...
Không làm vậy được bạn..
Kiểu này chỉ là chữa cháy thôi...
Cửa hàng bán chừng vài trăm thôi cũng không ai nhập liệu kiểu ấy.
Phải nhập liệu theo dạng table.
Sau đó thì nấu kiểu gì cũng đươc...
 
Lần chỉnh sửa cuối:
Kiểu nhập liệu phản khoa học nhất tôi từng gặp.
Giả sử không phải bảng nhập liệu mà là bảng trích xuất, hoặc bảng báo cáo đi chăng nữa, cũng là cấu trúc kỳ quặc.
 
Kiểu nhập liệu phản khoa học nhất tôi từng gặp.
Cũng bình thường thôi. Có thể vì đặc thù 1 PO không bao giờ quá 5 sản phẩm, nên số cột không bao giờ quá 11 cột.
Thường thì các cột SP và SL xen kẽ nhau như : SP 1 + SL1 + Sp2 + SL2 + ... + SP5 + SL5
Bảng này thì 5 SP xếp cạnh nhau sau đó 5 cột SL xếp cạnh nhau, với mục đích so sánh các loại SP, và cộng dồn SL
Xếp kiểu nào thì xếp, việc trích xuất ra kết quả, với VBA code thì chẳng có gì khó khăn cả.
 
Bạn thử tham khảo link này nhé
không được thì tính tiếp.
 
Xếp kiểu nào thì xếp, việc trích xuất ra kết quả, với VBA code thì chẳng có gì khó khăn cả.
Nếu cứ trông chờ vào VBA (mà trông chờ người khác chứ không phải tự làm), rồi muốn nhập liệu kiểu gì cũng được thì suốt đời phải đi hỏi.
Lưu ý là dữ liệu nhập vào khác với báo cáo, dữ liệu phải đúng chuẩn dữ liệu thì nhập liệu cũng dễ, file cũng nhẹ mà ra báo cáo cũng nhanh. Nhập liệu thẳng vào báo cáo thì chỉ được 1 báo cáo, không ra được báo cáo thứ 2.
 
Data entry nó có một tiêu chuẩn về quy trình. Đại kháí dựa vào kinh nghiệm tích lũy, và quy trình thương mãi.

Bởi vì các nước thế giới thứ ba tiếp xúc với quy trình thương mãi khá chậm. Rồi tiếp liền là máy tính và bảng tính trái rộng. Thế là mạnh ai nấy tự đặt quy trình cho mình.

Rất nhiều công sức lãng phí chỉ để đáp ứng ba cái mớ "tự động" này nọ của các kiểu data entry do người ta tự chế ra.

Những công sức nàu nếu để vào tìm hiểu tiêu chuẩn và thiết kế bảng tính đàng hoàng thì người ta có thể chạy trước dữ liệu (tiên liệu) thay vì chạy theo đuôi chúng (công thức khủng để báo cáo)
 
anh/chị/em giúp em xử lý bảng bên trên bằng Power Query để khớp số lượng theo mã sản phẩm tương ứng để ra được bảng phía dưới với

xin cảm ơn mọi người.

View attachment 296183
Dữ liệu hơi củ chuối, tuy nhiên bạn làm như sau:
Nhân bản cái table dữ liệu trên thành 2 Tables:
Table Số lượng:
1698648993821.png
Table Sản phảm:
1698649054191.png
Sau đó bạn Combine hai cái Table này lại rồi xử lý phân tách sử dụng List.Zip:
let
Source = List.Zip({SL[Đơn hàng],SL[Attribute],SL[Value],SP[Đơn hàng],SP[Attribute],SP[Value]}),
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Extracted Values" = Table.TransformColumns(#"Converted to Table", {"Column1", each Text.Combine(List.Transform(_, Text.From), ","), type text}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Column1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6"}),
#"Removed Columns" = Table.RemoveColumns(#"Split Column by Delimiter",{"Column1.2", "Column1.4", "Column1.5"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Column1.1", "Đơn hàng"}, {"Column1.6", "Sản phẩm"}, {"Column1.3", "Số lượng"}}),
#"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Số lượng", Int64.Type}, {"Sản phẩm", type text}})
in
#"Changed Type"
Kết quả:
1698649330763.png
 
Bạn kiểm tra sheet Kết quả xem đúng không :D
Kết quả đúng rồi, cảm ơn bác
Bài đã được tự động gộp:

VBA code được không bạn?
Vâng, VBA được thì tốt quá anh ơi :D
Bài đã được tự động gộp:

Nếu cứ trông chờ vào VBA (mà trông chờ người khác chứ không phải tự làm), rồi muốn nhập liệu kiểu gì cũng được thì suốt đời phải đi hỏi.
Lưu ý là dữ liệu nhập vào khác với báo cáo, dữ liệu phải đúng chuẩn dữ liệu thì nhập liệu cũng dễ, file cũng nhẹ mà ra báo cáo cũng nhanh. Nhập liệu thẳng vào báo cáo thì chỉ được 1 báo cáo, không ra được báo cáo thứ 2.
Vâng, cháu hiểu ý chú. Nếu mình tự quy định nhập liệu được thì tốt.
Đây là 1 bài toán mà dữ liệu được xuất ra từ máy sản xuất,
bây giờ người xuất dữ liệu đó ra, họ muốn chuẩn hóa lại để pivot hay trích lọc dữ liệu dễ dàng hơn đó chú
Bài đã được tự động gộp:

Dữ liệu hơi củ chuối, tuy nhiên bạn làm như sau:
Nhân bản cái table dữ liệu trên thành 2 Tables:
Table Số lượng:

Table Sản phảm:

Sau đó bạn Combine hai cái Table này lại rồi xử lý phân tách sử dụng List.Zip:
let
Source = List.Zip({SL[Đơn hàng],SL[Attribute],SL[Value],SP[Đơn hàng],SP[Attribute],SP[Value]}),
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Extracted Values" = Table.TransformColumns(#"Converted to Table", {"Column1", each Text.Combine(List.Transform(_, Text.From), ","), type text}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Column1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6"}),
#"Removed Columns" = Table.RemoveColumns(#"Split Column by Delimiter",{"Column1.2", "Column1.4", "Column1.5"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Column1.1", "Đơn hàng"}, {"Column1.6", "Sản phẩm"}, {"Column1.3", "Số lượng"}}),
#"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Số lượng", Int64.Type}, {"Sản phẩm", type text}})
in
#"Changed Type"
Kết quả:
Xin lỗi bác, em chậm tiêu quá, bác gửi file đính kèm em tham khảo với ạ
 
Lần chỉnh sửa cuối:
Kết quả đúng rồi, cảm ơn bác
Bài đã được tự động gộp:


Vâng, VBA được thì tốt quá anh ơi :D
Bài đã được tự động gộp:


Vâng, cháu hiểu ý chú. Nếu mình tự quy định nhập liệu được thì tốt.
Đây là 1 bài toán mà dữ liệu được xuất ra từ máy sản xuất,
bây giờ người xuất dữ liệu đó ra, họ muốn chuẩn hóa lại để pivot hay trích lọc dữ liệu dễ dàng hơn đó chú
Bài đã được tự động gộp:


Xin lỗi bác, em chậm tiêu quá, bác gửi file đính kèm em tham khảo với ạ
Đây bạn: Sử dụng như vậy là được:
 

File đính kèm

  • Khớp sp với số lượng tương ứng-Send.xlsx
    210.2 KB · Đọc: 14
Giải pháp với VBA code:

PHP:
Option Explicit
Sub tonghop()
Dim st&, i&, j&, k&, rng, res(1 To 100000, 1 To 3)
rng = Range("A2").CurrentRegion.Value
st = (UBound(rng, 2) - 1) / 2
For i = 2 To UBound(rng)
    For j = 2 To st + 1
        If rng(i, j) <> "" Then
            k = k + 1: res(k, 1) = rng(i, 1)
            res(k, 2) = rng(i, j): res(k, 3) = rng(i, j + st)
        End If
    Next
Next
Range("M2:O10000").ClearContents 'Xoa du lieu cu
If k > 0 Then Range("M2").Resize(k, 3).Value = res ' Dan ket qua vao vung M2:O
End Sub
 

File đính kèm

  • Khớp sp với số lượng tương ứng.xlsm
    19.7 KB · Đọc: 4
Web KT
Back
Top Bottom