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.Bạn không hay sử dụng power query à
Ý 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ế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
![]()
Bạn lấy file bài 21: bảng gốc tách ra sau đó mới mergeÝ 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?
Ý của thầy chắc em đã nắm bắt được, tức là: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ả 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Đư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.
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à.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
VBA là ưu tiên chót nhá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à.
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ộtThầ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 ạ?
Thầy cho em hỏi, nếu dùng lệnh: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
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"
let
Source = Table.Combine({#"Sơn ED", #"Sơn bột", #"Sơn nước"},each [Mã] <> null and [Mã] <> "")
in
Source
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"
Sai cú pháp thật. Thêm 1 step filter đi (Table.SelectRows)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:
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ôngMà lạ, tôi chạy dữ liệu mẫu không thấy mã bị rỗng?
Hình như câu #"Removed Blank Rows" dư, và <> null với <> "" chỉ cần mộtDạ đó 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
Có lẽ như này là ngắn gọn nhất em có thể làm:Hình như câu #"Removed Blank Rows" dư, và <> null với <> "" chỉ cần một
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"