hoangtuaotrang_hp_vn
Thành viên tích cực


- Tham gia
- 17/5/09
- Bài viết
- 1,015
- Được thích
- 891
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 điHướ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
Dữ liệu không nhiều lắm chắc vẫn dùng hàm được nhỉ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
Bạn kiểm tra sheet Kết quả xem đúng khônganh/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
Kiểu này chỉ là chữa cháy thôi...Không làm vậy được bạn..
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.Kiểu nhập liệu phản khoa học nhất tôi 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.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ả.
Dữ liệu hơi củ chuối, tuy nhiên bạn làm như sau: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ùng hàm List.Zip được bác, nếu không chắc phải dùng vòng lặpDữ liệu không nhiều lắm chắc vẫn dùng hàm được nhỉ
Kết quả đúng rồi, cảm ơn bácBạn kiểm tra sheet Kết quả xem đúng không![]()
Vâng, VBA được thì tốt quá anh ơiVBA code được không bạn?
Vâng, cháu hiểu ý chú. Nếu mình tự quy định nhập liệu được thì tốt.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.
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 ạ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ả:
Đây bạn: Sử dụng như vậy là được: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
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 ạ
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