let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Filled Down" = Table.FillDown(Source,{"Tổn hao", "Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước"}),
#"Changed Type" = Table.TransformColumnTypes(#"Filled Down",{{"Độ dày (um)", type text}, {"Kích thước", type text}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Tổn hao", "Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước", "Loại"}, "Attribute", "Value"),
#"Added Custom" = Table.AddColumn(#"Unpivoted Columns", "Mặt hàng", each [#"Một/Hai kính"] & "/" & [Loại pin] & "/" & [#"Độ dày (um)"] & "/" &[Kích thước]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước"}),
#"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Tổn hao", "Mặt hàng", "Loại", "Attribute", "Value"}),
#"Grouped Rows" = Table.Group(#"Reordered Columns", {"Tổn hao", "Mặt hàng", "Loại"}, {{"Value", each List.Sum([Value]), type any}}),
#"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each ([Loại] <> null and [Loại] <> "Tổn hao")),
#"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"[Loại]), "Loại", "Value", List.Sum)
in
#"Pivoted Column"
Mình cũng mày mò làm được đến cột tổn hao rồi, chỉ là cột tỉ trọng và điểm số cần đặt công thức. Nhưng trong power query công thức không áp dụng giống bảng tính excel bên ngoài.Tôi làm đến đây và bạn làm tiếp:
View attachment 277774HTML:let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Filled Down" = Table.FillDown(Source,{"Tổn hao", "Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước"}), #"Changed Type" = Table.TransformColumnTypes(#"Filled Down",{{"Độ dày (um)", type text}, {"Kích thước", type text}}), #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Tổn hao", "Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước", "Loại"}, "Attribute", "Value"), #"Added Custom" = Table.AddColumn(#"Unpivoted Columns", "Mặt hàng", each [#"Một/Hai kính"] & "/" & [Loại pin] & "/" & [#"Độ dày (um)"] & "/" &[Kích thước]), #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước"}), #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Tổn hao", "Mặt hàng", "Loại", "Attribute", "Value"}), #"Grouped Rows" = Table.Group(#"Reordered Columns", {"Tổn hao", "Mặt hàng", "Loại"}, {{"Value", each List.Sum([Value]), type any}}), #"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each ([Loại] <> null and [Loại] <> "Tổn hao")), #"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"[Loại]), "Loại", "Value", List.Sum) in #"Pivoted Column"
Thêm 3 câuVí dụ: Tỉ trọng = Số lượng hàng một kính/P4/180/166 : Sum(tất cả các loại hàng)
RemovedColumns1 = Table.RemoveColumns(#"Pivoted Column",{"Hàn hỏng", "Cắt hỏng", "Lỗi NVL"}),
SumSL = List.Sum(RemovedColumns1[Số lượng đưa vào]),
AddTyTrong = Table.AddColumn(RemovedColumns1,"TyTrong", each [Số lượng đưa vào]/ SumSL)
Bạn ơi, có thể gửi mình file excel mà bạn sửa được không? Mình làm cứ bị báo lỗi ở AddTytrong.Thêm 3 câu
Mã:RemovedColumns1 = Table.RemoveColumns(#"Pivoted Column",{"Hàn hỏng", "Cắt hỏng", "Lỗi NVL"}), SumSL = List.Sum(RemovedColumns1[Số lượng đưa vào]), AddTyTrong = Table.AddColumn(RemovedColumns1,"TyTrong", each [Số lượng đưa vào]/ SumSL)
Lên chức "tay bó bột" rồi hởTôi làm đến đây và bạn làm tiếp:
...
Đây là xuất ra Pivot rồi làm chứ,Mình làm được rồi cám ơn bạn. Hỏi thêm mình có thể hoà ô đầu tiên "Tỉ lệ tổn hao" như hình dưới trong power query không?
View attachment 277779
Hình trên là pivot, ý mình hỏi bạn ptm là có thể hoà ô được trong power query không ấy.Đây là xuất ra Pivot rồi làm chứ,
Sao mình làm kiểu gì nó cũng ra thế này, mà không ra số giống của bạn nhỉ?Hình trên là pivot, ý mình hỏi bạn ptm là có thể hoà ô được trong power query không ấy.
Tổn hao | Mặt hàng | Cắt hỏng | Hàn hỏng | Lỗi NVL | Mục tiêu | Số lượng đưa vào | Tổn hao | Tổng lỗi |
Tổn hao pin | Hai kính/Đơn tinh/160/166 | - | - | - | 0.01 | - | - | - |
Hai kính/Đơn tinh/160/182 | - | - | - | 0.01 | - | - | - | |
Hai kính/Đơn tinh/160/210 | - | - | - | - | - | - | - | |
Hai kính/Đơn tinh/165/166 | - | - | - | 0.01 | - | - | - | |
Hai kính/Đơn tinh/165/182 | - | - | - | 0.01 | - | - | - | |
Hai kính/Đơn tinh/165/210 | - | - | - | 0.01 | - | - | - | |
Hai kính/Đơn tinh/170/166 | - | - | - | 0.01 | - | - | - | |
Hai kính/Đơn tinh/170/182 | - | - | - | 0.01 | - | - | - | |
Hai kính/Đơn tinh/170/210 | - | - | - | 0.01 | - | - | - | |
Hai kính/P4/180/166 | - | - | - | 0.01 | - | - | - | |
Một kính/Đơn tinh/160/166 | 90.00 | 924.00 | 166.00 | 0.01 | 368,380.00 | 0.01 | 1,180.00 | |
Một kính/Đơn tinh/160/210 | - | - | - | - | - | - | - | |
Một kính/Đơn tinh/165/166 | 3,318.00 | 26,140.00 | 3,920.00 | 0.01 | 15,954,014.00 | 0.01 | 33,378.00 | |
Một kính/Đơn tinh/165/182 | - | - | - | 0.01 | - | - | - | |
Một kính/Đơn tinh/165/210 | - | - | - | 0.01 | - | - | - | |
Một kính/Đơn tinh/170/166 | 6,908.00 | 44,724.00 | 7,518.00 | 0.01 | 36,769,646.00 | 0.01 | 58,512.00 | |
Một kính/Đơn tinh/170/182 | - | - | - | 0.01 | - | - | - | |
Một kính/Đơn tinh/170/210 | - | - | - | 0.01 | - | - | - | |
Một kính/Đơn tinh/175/210 | - | - | - | 0.01 | - | - | - | |
Một kính/P4/180/166 | - | - | - | 0.01 | - | - | - | |
Một kính/P5/182/166 | - | - | - | 0.01 | - | - | - |
cái đó là do dữ liệu ảnh mẫu khác thời điểm với dữ liệu trong file excel nên số liệu khác nhau, file ảnh là trước đó tớ làm thủ công kết hợp với pivot. Tớ up lên ý muốn đưa dữ liệu về form mẫu như vậy.Sao mình làm kiểu gì nó cũng ra thế này, mà không ra số giống của bạn nhỉ?
Cái cột mục tiêu toàn ra 0.01
Tổn hao Mặt hàng Cắt hỏng Hàn hỏng Lỗi NVL Mục tiêu Số lượng đưa vào Tổn hao Tổng lỗi Tổn hao pin Hai kính/Đơn tinh/160/166 - - - 0.01 - - - Hai kính/Đơn tinh/160/182 - - - 0.01 - - - Hai kính/Đơn tinh/160/210 - - - - - - - Hai kính/Đơn tinh/165/166 - - - 0.01 - - - Hai kính/Đơn tinh/165/182 - - - 0.01 - - - Hai kính/Đơn tinh/165/210 - - - 0.01 - - - Hai kính/Đơn tinh/170/166 - - - 0.01 - - - Hai kính/Đơn tinh/170/182 - - - 0.01 - - - Hai kính/Đơn tinh/170/210 - - - 0.01 - - - Hai kính/P4/180/166 - - - 0.01 - - - Một kính/Đơn tinh/160/166 90.00 924.00 166.00 0.01 368,380.00 0.01 1,180.00 Một kính/Đơn tinh/160/210 - - - - - - - Một kính/Đơn tinh/165/166 3,318.00 26,140.00 3,920.00 0.01 15,954,014.00 0.01 33,378.00 Một kính/Đơn tinh/165/182 - - - 0.01 - - - Một kính/Đơn tinh/165/210 - - - 0.01 - - - Một kính/Đơn tinh/170/166 6,908.00 44,724.00 7,518.00 0.01 36,769,646.00 0.01 58,512.00 Một kính/Đơn tinh/170/182 - - - 0.01 - - - Một kính/Đơn tinh/170/210 - - - 0.01 - - - Một kính/Đơn tinh/175/210 - - - 0.01 - - - Một kính/P4/180/166 - - - 0.01 - - - Một kính/P5/182/166 - - - 0.01 - - -
Query mình đang làm nó ra thế này?cái đó là do dữ liệu ảnh mẫu khác thời điểm với dữ liệu trong file excel nên số liệu khác nhau, file ảnh là trước đó tớ làm thủ công kết hợp với pivot. Tớ up lên ý muốn đưa dữ liệu về form mẫu như vậy.
Em làm theo các bước của bác nhưng đến bước này hình như sai hay sao ấy ạTôi làm đến đây và bạn làm tiếp:
View attachment 277774HTML:let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Filled Down" = Table.FillDown(Source,{"Tổn hao", "Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước"}), #"Changed Type" = Table.TransformColumnTypes(#"Filled Down",{{"Độ dày (um)", type text}, {"Kích thước", type text}}), #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Tổn hao", "Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước", "Loại"}, "Attribute", "Value"), #"Added Custom" = Table.AddColumn(#"Unpivoted Columns", "Mặt hàng", each [#"Một/Hai kính"] & "/" & [Loại pin] & "/" & [#"Độ dày (um)"] & "/" &[Kích thước]), #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước"}), #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Tổn hao", "Mặt hàng", "Loại", "Attribute", "Value"}), #"Grouped Rows" = Table.Group(#"Reordered Columns", {"Tổn hao", "Mặt hàng", "Loại"}, {{"Value", each List.Sum([Value]), type any}}), #"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each ([Loại] <> null and [Loại] <> "Tổn hao")), #"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"[Loại]), "Loại", "Value", List.Sum) in #"Pivoted Column"
Bước Unpivot của tôi làEm làm theo các bước của bác nhưng đến bước này hình như sai hay sao ấy ạ
= Table.UnpivotOtherColumns(#"Changed Type", {"Tổn hao", "Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước", "Loại"}, "Attribute", "Value")
Không.Mình làm được rồi cám ơn bạn. Hỏi thêm mình có thể hoà ô đầu tiên "Tỉ lệ tổn hao" như hình dưới trong power query không?
Bác cho em hỏi thêm chút ạ,Bước Unpivot của tôi là
Của bạn thiếu "Loại" nên Loại trở thành 1 atttributeMã:= Table.UnpivotOtherColumns(#"Changed Type", {"Tổn hao", "Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước", "Loại"}, "Attribute", "Value")
Không.
Thử tạo pivot table từ query mới tạo.
View attachment 277786
Bạn thử xem. Tôi thấy rằng làm như vậy không tính được tỷ trọng và cột tính điểmBác cho em hỏi thêm chút ạ,
Nếu để dạng cột như thế kia ở query lúc dùng pivot nó vẫn ra được ạ,
Em thấy để các chỉ tiêu số lượng đưa vào, hàn.... ở dạng 1 cột thì dùng được pivot chứ ạ.
Mình làm theo hướng dẫn của bạn ptm ra được kết quả mà, bác xem file đính kèm nhé.Query mình đang làm nó ra thế này?
Không hiểu sao đẩy được cái cột Loại nó thành chỉ tiêu ngang thế kia nhỉ?
Dạng như mình đang làm này là dùng Pivot tập hợp,
Chưa hiểu ý định của bạn làm gì mà đẩy nó kiểu pivot trên query luôn vậy.
View attachment 277780
Bài đã được tự động gộp:
Em làm theo các bước của bác nhưng đến bước này hình như sai hay sao ấy ạ
Mình cũng đi theo hướng này,Gửi bạn file, xem đúng ý không?
View attachment 277785
Nhưng không hiểu sao bạn kia lại để dạng Pivot trong query
sau đó lại làm công thức ở query luôn,
Thì bạn ấy tính toán luôn bằng Power query, cũng sao đâu, power query vẫn tính toán bình thường mà. Tuy nhiên theo ý kiến của tôi thì Power Query nó mạnh về ETL, còn tính toán thì nên là công việc của Power Pivot(Cái này trực quan và tùy biến nó dễ hơn)Mình cũng đi theo hướng này,
Nhưng không hiểu sao bạn kia lại để dạng Pivot trong query
sau đó lại làm công thức ở query luôn,
Chưa hiểu mục đích chính là gì.
))))))
Thì vậy nên mình mới thấy lạ,Thì bạn ấy tính toán luôn bằng Power query, cũng sao đâu, power query vẫn tính toán bình thường mà. Tuy nhiên theo ý kiến của tôi thì Power Query nó mạnh về ETL, còn tính toán thì nên là công việc của Power Pivot(Cái này trực quan và tùy biến nó dễ hơn)
Đoạn Groupby em làm nó không ra,Bạn thử xem. Tôi thấy rằng làm như vậy không tính được tỷ trọng và cột tính điểm
Tôi làm đến đây và bạn làm tiếp:
View attachment 277774HTML:let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Filled Down" = Table.FillDown(Source,{"Tổn hao", "Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước"}), #"Changed Type" = Table.TransformColumnTypes(#"Filled Down",{{"Độ dày (um)", type text}, {"Kích thước", type text}}), #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Tổn hao", "Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước", "Loại"}, "Attribute", "Value"), #"Added Custom" = Table.AddColumn(#"Unpivoted Columns", "Mặt hàng", each [#"Một/Hai kính"] & "/" & [Loại pin] & "/" & [#"Độ dày (um)"] & "/" &[Kích thước]), #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Một/Hai kính", "Loại pin", "Độ dày (um)", "Kích thước"}), #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Tổn hao", "Mặt hàng", "Loại", "Attribute", "Value"}), #"Grouped Rows" = Table.Group(#"Reordered Columns", {"Tổn hao", "Mặt hàng", "Loại"}, {{"Value", each List.Sum([Value]), type any}}), #"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each ([Loại] <> null and [Loại] <> "Tổn hao")), #"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"[Loại]), "Loại", "Value", List.Sum) in #"Pivoted Column"
Mục đích chính là ra kết quảMình cũng đi theo hướng này,
Nhưng không hiểu sao bạn kia lại để dạng Pivot trong query
sau đó lại làm công thức ở query luôn,
Chưa hiểu mục đích chính là gì.
))))))
Chưa đến mức bó bột. Hai tháng nay bệnh nền gây biến chứng tê và cứng khớp mất mấy ngón. Mí lị coi trong file thấy tự làm được 1 mớ, chỉ bí chỗ nào thì chỉ chỗ đó.Lên chức "tay bó bột" rồi hở![]()
Mục đích chính là ra kết quả![]()
Chủ đề là Power query, bạn ấy làm bằng query, thắc mắc việc tính trong query không giống excel, nên tôi làm cho bạn ấy bằng query.
File tôi làm đính kèm dưới đây, trong đó có query + Power pivot của hocexcel1991 và query thuần của tôi. Khi refresh thì của tôi lại nhanh hơn do chỉ có 21 dòng, của hocexcel 183 dòng.
Tôi không nói làm thuần power query là hay, tùy trường hợp sẽ phải dùng power pivot (tạo measure bằng DAX).
Ghi chú là Cột Value sau khi unpivot của hocexcel khi đổi type thành Int64 nên mất các giá trị của tổn hao, tất cả tổn hao bằng 0, tôi đã sửa lại type number.
Nếu so sánh với kết quả của tác giả ở bài 17 thì có khác, do bạn ấy lọc chỉ lấy tháng 3, và chỉ lấy các mặt hàng đưa vào <> 0
Đó là 1 bước trung gian tính tổng của cột "Số lượng đưa vào". Kết quả của bước chỉ là 1 con số tổng, dùng số này để tính toán tạo cột tỷ trọng cho bước tiếp theo. Trong lập trình gọi là biến "tổng" và tính gía trị tổng cho biến.Bác ơi,
Bác giải thích giúp em chỗ này được không ạ,
Em làm đến bước này toàn ra list rồi tính tổng, nó mất luôn bảng không làm tiếp chỗ addTytrong được ạ.
AddTyTrong = Table.AddColumn(RemovedColumns1,"TyTrong", each [Số lượng đưa vào]/ SumSL)
AddTyTrong = Table.AddColumn(RemovedColumns1,"TyTrong",
each [Số lượng đưa vào]/List.Sum(RemovedColumns1[Số lượng đưa vào]))
Em chưa hiểu bước này bác thao tác như thế nào mà ra được kiểu đó ạ,Đó là 1 bước trung gian tính tổng của cột "Số lượng đưa vào". Kết quả của bước chỉ là 1 con số tổng, dùng số này để tính toán tạo cột tỷ trọng cho bước tiếp theo. Trong lập trình gọi là biến "tổng" và tính gía trị tổng cho biến.
Dùng 1 cột phụ HangTmp = if [Hàng] = null and [Loại] <> null then [Loại] else nullChào bác @ptm0412 , em còn một bảng nữa trong quá trình làm có một cột cần bác hỗ trợ:
Bác cho cháu hỏi là thay bằng [Hàng] Is null thì có sự khác biệt gì không bác?if [Hàng] = null
Thử biết ngay í màBác cho cháu hỏi là thay bằng [Hàng] Is null thì có sự khác biệt gì không bác?
Tôi viết hơi sai, mà bạn cũng làm sai so với cái sai đó.Em làm xong ra được như vậy:
Còn các loại hàng khác ghép với cột phụ mới như thế nào để ra 1 cột tổng các loại hàng vậy bác
Em chỉ biết thao tác trên query thôi ạ,
Em làm xong ra được như vậy:
View attachment 278161
Còn các loại hàng khác ghép với cột phụ mới như thế nào để ra 1 cột tổng các loại hàng vậy bác
View attachment 278162