[Pivot table] Chuyển dữ liệu từ cột thành dòng (1 người xem)

Liên hệ QC

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

Đã làm theo ý trên: Data gốc, tách ra, unpivot, và gộp lại
 

File đính kèm

Bạn không hay sử dụng power query à
Không công việc của mình không liên quan nhiều đến excel toàn tìm kiếm với tính tổng là nhiều, chẳng mấy khi động đến hàm. Vì thích nên hay lên mạng tìm hiểu cho biết thôi, chẳng học bài bản bao giờ toàn thầy Google dạy nên nhiều cái cơ bản có khi không biết, thấy có gì mới, hay mà không biết là google thôi.
 
Nếu tôi là người lập báo cáo, và dùng Power query thì tôi làm thế này, tính tổng theo loại dễ dàng

1606400041167.png
Ý này của thầy Mỹ cũng rất là hay, lúc đầu em không biết pivot làm được không nên em đăng hỏi trước, còn giờ biết query có khả năng làm điều này thì xuất báo cáo ra như vậy cũng rất là hay. Nhưng thầy cho em hỏi, chỗ bảng query đó là mình lấy dữ liệu từ 1 bảng gốc, hay phải thủ công tách bảng gốc ra 3 bảng nhỏ sơn bột, nước, ed mới xử lý được?
 
Ý này của thầy Mỹ cũng rất là hay, lúc đầu em không biết pivot làm được không nên em đăng hỏi trước, còn giờ biết query có khả năng làm điều này thì xuất báo cáo ra như vậy cũng rất là hay. Nhưng thầy cho em hỏi, chỗ bảng query đó là mình lấy dữ liệu từ 1 bảng gốc, hay phải thủ công tách bảng gốc ra 3 bảng nhỏ sơn bột, nước, ed mới xử lý được?
Bạn lấy file bài 21: bảng gốc tách ra sau đó mới merge
Lưu ý là khi sử dụng unpivot thì bảng gốc chỉ được thêm dòng, không được thêm cột. Thêm cột là phải sửa query thậm chí phải viết query khác
 
Bạn lấy file bài 21: bảng gốc tách ra sau đó mới merge
Lưu ý là khi sử dụng unpivot thì bảng gốc chỉ được thêm dòng, không được thêm cột. Thêm cột là phải sửa query thậm chí phải viết query khác
Ý của thầy chắc em đã nắm bắt được, tức là:
Đưa dữ liệu gốc vào Power query, dùng query tách 3 bảng sơn ed, sơn bột, còn sơn nước đảo cột thành dòng.
Từ 3 bảng này merge lại thành một bảng duy nhất theo dòng
Rồi sau đó dùng pivot tạo báo cáo
Hướng làm về cơ bản em nắm bắt được là vậy, còn cách làm em còn mông lung lắm
Em sẽ nghiên cứu thêm phần này, cảm ơn thầy đã chỉ dẫn và hỗ trợ
 
Đưa dữ liệu gốc vào Power query, dùng query tách 3 bảng sơn ed, sơn bột, còn sơn nước đảo cột thành dòng.
Cả 3 bảng con đều phải đảo cột thành dòng, nhưng sơn nước phức tạp nhất: đảo xong còn phải tạo cột duy nhất chứa mã chứ không thì đang là nhiều cột mã không chuyển thành dòng được
 
Cả 3 bảng con đều phải đảo cột thành dòng, nhưng sơn nước phức tạp nhất: đảo xong còn phải tạo cột duy nhất chứa mã chứ không thì đang là nhiều cột mã không chuyển thành dòng được
Nếu vất vả thế sao cứ phải queries làm chi vậy sư phụ. có thể dùng VBA để sếp dữ liệu cho data của pivot mà.
 
Thầy Mỹ cho em hỏi đoạn này với, làm sao để nó hiểu code-1746,code-1747,code-1748 với tên là "mã" vậy ạ?
Tên 2 cột mới sau khi unpivot bằng tay mặc định là "Attribute" và "Value", mình sửa mặc định trong câu lệnh luôn. Bạn chưa quen thì cứ làm tay (chọn cột cần chuyển, nhấn nút unpivot), rồi sửa tên cột
 
Tên 2 cột mới sau khi unpivot bằng tay mặc định là "Attribute" và "Value", mình sửa mặc định trong câu lệnh luôn. Bạn chưa quen thì cứ làm tay (chọn cột cần chuyển, nhấn nút unpivot), rồi sửa tên cột
Thầy cho em hỏi, nếu dùng lệnh:
Mã:
let
    Source = Table.Combine({#"Sơn ED", #"Sơn bột", #"Sơn nước"}),
    #"Filtered Rows" = Table.SelectRows(Source, each [Mã] <> null and [Mã] <> "")
in
    #"Filtered Rows"
Thì khi mình muốn khác null và khác rỗng trực tiếp từ lệnh table.combine thì có được không?
Kiểu như là vậy thầy, nhưng mà chắc không đúng cú pháp hay sao đó mà ra lỗi:
Mã:
let
    Source = Table.Combine({#"Sơn ED", #"Sơn bột", #"Sơn nước"},each [Mã] <> null and [Mã] <> "")
in
    Source
Bài đã được tự động gộp:

Hiện tại em đang sử dụng code này, cho ra kết quả đúng nhưng không biết có rút ngắn theo ý tưởng trên được không
Mã:
let
    Source = Table.Combine({#"Sơn ED", #"Sơn bột", #"Sơn nước"}),
    #"Filtered Rows" = Table.SelectRows(Source, each [Mã] <> null and [Mã] <> ""),
    #"Removed Blank Rows" = Table.SelectRows(#"Filtered Rows", each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null})))
in
    #"Removed Blank Rows"
 
Mà lạ, tôi chạy dữ liệu mẫu không thấy mã bị rỗng?
Dạ đó là mẫu em rút ra còn rất ít dữ liệu, vì sơn nước có mã 4 loại sơn, mã 3 loại, nên loại nào 3 loại nó ra null hoặc blanks. Thực tế em vẫn xử lý được (như phần merge của bài #31), nhưng em muốn hỏi xem có thể ngắn gọn hơn không
 
Dạ đó là mẫu em rút ra còn rất ít dữ liệu, vì sơn nước có mã 4 loại sơn, mã 3 loại, nên loại nào 3 loại nó ra null hoặc blanks. Thực tế em vẫn xử lý được (như phần merge của bài #31), nhưng em muốn hỏi xem có thể ngắn gọn hơn không
Hình như câu #"Removed Blank Rows" dư, và <> null với <> "" chỉ cần một
 
.
Bài đã được tự động gộp:

Hình như câu #"Removed Blank Rows" dư, và <> null với <> "" chỉ cần một
Có lẽ như này là ngắn gọn nhất em có thể làm:
Mã:
let
    Source = Table.Combine({#"Sơn ED", #"Sơn bột", #"Sơn nước"}),
    #"Removed Blank Rows" = Table.SelectRows(Source,each not List.IsEmpty(List.RemoveMatchingItems({[Mã]}, {null})))
in
    #"Removed Blank Rows"
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom