Bạn dùng M code sau nhé.Em nhờ các anh / chị trên diễn đàn hướng dẫn em viết công thức trong power query ở sheet1. Em đã viết bằng excel trên file. Em cảm ơn ạ
let
Source = Excel.CurrentWorkbook(){[Name = "Table3"]}[Content],
ketqua = List.Combine(
Table.Group(
Source,
{"Mã KH"},
{
{
"Sum",
each
let
lts = [Tổng tiền]
in
List.Transform(
{0 .. List.Count(lts) - 1},
each try lts{_} + lts{_ - 1} otherwise lts{0}
)
}
}
)[Sum]
)
in
ketqua
Bạn dùng M code sau nhé.
View attachment 303032Mã:let Source = Excel.CurrentWorkbook(){[Name = "Table3"]}[Content], ketqua = List.Combine( Table.Group( Source, {"Mã KH"}, { { "Sum", each let lts = [Tổng tiền] in List.Transform( {0 .. List.Count(lts) - 1}, each try lts{_} + lts{_ - 1} otherwise lts{0} ) } } )[Sum] ) in ketqua
Em làm được rồi ạ, em cảm ơn bác ạ.Bạn dùng M code sau nhé.
View attachment 303032Mã:let Source = Excel.CurrentWorkbook(){[Name = "Table3"]}[Content], ketqua = List.Combine( Table.Group( Source, {"Mã KH"}, { { "Sum", each let lts = [Tổng tiền] in List.Transform( {0 .. List.Count(lts) - 1}, each try lts{_} + lts{_ - 1} otherwise lts{0} ) } } )[Sum] ) in ketqua
Bạn dùng M code sau nhé.
View attachment 303032Mã:let Source = Excel.CurrentWorkbook(){[Name = "Table3"]}[Content], ketqua = List.Combine( Table.Group( Source, {"Mã KH"}, { { "Sum", each let lts = [Tổng tiền] in List.Transform( {0 .. List.Count(lts) - 1}, each try lts{_} + lts{_ - 1} otherwise lts{0} ) } } )[Sum] ) in ketqua
Bạn dùng M code sau nhé.
View attachment 303032Mã:let Source = Excel.CurrentWorkbook(){[Name = "Table3"]}[Content], ketqua = List.Combine( Table.Group( Source, {"Mã KH"}, { { "Sum", each let lts = [Tổng tiền] in List.Transform( {0 .. List.Count(lts) - 1}, each try lts{_} + lts{_ - 1} otherwise lts{0} ) } } )[Sum] ) in ketqua
Nếu bạn muốn load cả bảng thì dùng mcode sau:View attachment 303034View attachment 303035
Anh ơi, sao sang bảng khác nó lại báo lỗi như này anh nhỉ? Em ko biết nó báo lỗi thế nào anh ạ. A giúp em với ạ
Bài đã được tự động gộp:
// Table3
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
ketqua = Table.Combine(Table.Group(Source, {"Mã KH"}, {{"Sum", each let lts = Table.ToColumns(_) in Table.FromColumns(lts&{List.Transform({0..List.Count(lts{1})-1}, each try lts{1}{_}+lts{1}{_-1} otherwise lts{1}{0})},Table.ColumnNames(_)&{"Run"})}})[Sum])
in
ketqua
Nếu bạn muốn load cả bảng thì dùng mcode sau:
Mã:// Table3 let Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content], ketqua = Table.Combine(Table.Group(Source, {"Mã KH"}, {{"Sum", each let lts = Table.ToColumns(_) in Table.FromColumns(lts&{List.Transform({0..List.Count(lts{1})-1}, each try lts{1}{_}+lts{1}{_-1} otherwise lts{1}{0})},Table.ColumnNames(_)&{"Run"})}})[Sum]) in ketqua
Cột D và E của bạn có công thức có vẻ đang sai nếu như đang muốn tính lũy kế.Các bác giúp em với ạ
Mình tính lũy kế ở cột B mà bạn, cột C là số lần xuất hiện. Cột D ko liên quanCột D và E của bạn có công thức có vẻ đang sai nếu như đang muốn tính lũy kế.
Tính lũy kế:
D2 =IF(C2=C1,D1+B2,B2)
E2 =COUNTIF($C$2:C2,C2)
Ý của mình cột E chạy code nó đang tính sai í: chỉ đúng khi số lần lập lại bằng <=2, còn lớn hơn thì không đúng ạ.Cột D và E của bạn có công thức có vẻ đang sai nếu như đang muốn tính lũy kế.
Tính lũy kế:
D2 =IF(C2=C1,D1+B2,B2)
E2 =COUNTIF($C$2:C2,C2)
Công thức của bạn sai trước. Rồi PQ chưa biết đúng sai nhưng bạn đang đối chiếu với cột sai của bạn.Ý của mình cột E chạy code nó đang tính sai í: chỉ đúng khi số lần lập lại bằng <=2, còn lớn hơn thì không đúng ạ.
Mình gửi lại file nhé. Mình nhờ bạn viết code M trong power query hộ mình vớiCông thức của bạn sai trước. Rồi PQ chưa biết đúng sai nhưng bạn đang đối chiếu với cột sai của bạn.
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
Sort = Table.Sort(Source,{{"Mã KH", Order.Ascending}, {"tiền", Order.Ascending}}),
Types = Table.TransformColumnTypes(Sort,{{"tiền", type number}}),
Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type),
Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "tiền"})),
Custom3 = List.Transform (Custom2[Ct2], each
let
a = Table.LastN(_, 1)[Mã KH]{0},
Filter = Table.SelectRows(_, each [Mã KH] = a),
SumTien = List.Sum(Filter[tiền])
in SumTien),
Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH", "Mã khách hàng", "tiền"}), "Luyke", each Custom3{[STT] - 1})
in
Result
Em cảm ơn bác ạ!Code lũy kế:
JavaScript:let Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content], Sort = Table.Sort(Source,{{"Mã KH", Order.Ascending}, {"tiền", Order.Ascending}}), Types = Table.TransformColumnTypes(Sort,{{"tiền", type number}}), Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type), Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "tiền"})), Custom3 = List.Transform (Custom2[Ct2], each let a = Table.LastN(_, 1)[Mã KH]{0}, Filter = Table.SelectRows(_, each [Mã KH] = a), SumTien = List.Sum(Filter[tiền]) in SumTien), Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH", "Mã khách hàng", "tiền"}), "Luyke", each Custom3{[STT] - 1}) in Result
View attachment 303100
Anh ơi, anh có thể giải thích giúp em chút về code trên được không anh. Để em hiểu logic code đó hơn ạ. Em cảm ơn anh ạCode lũy kế:
JavaScript:let Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content], Sort = Table.Sort(Source,{{"Mã KH", Order.Ascending}, {"tiền", Order.Ascending}}), Types = Table.TransformColumnTypes(Sort,{{"tiền", type number}}), Index = Table.AddIndexColumn(Types, "STT", 1, 1, Int64.Type), Custom2 = Table.AddColumn(Index, "Ct2", each Table.SelectColumns(Table.FirstN(Index,[STT]),{"Mã KH", "tiền"})), Custom3 = List.Transform (Custom2[Ct2], each let a = Table.LastN(_, 1)[Mã KH]{0}, Filter = Table.SelectRows(_, each [Mã KH] = a), SumTien = List.Sum(Filter[tiền]) in SumTien), Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH", "Mã khách hàng", "tiền"}), "Luyke", each Custom3{[STT] - 1}) in Result
View attachment 303100
Bạn xem kết quả từng step cũng thấy.Anh ơi, anh có thể giải thích giúp em chút về code trên được không anh. Để em hiểu logic code đó hơn ạ. Em cảm ơn anh ạ
Qúa rõ ràng và bài bản...Step by step...
- Sort = Table.Sort(Source,{{"Mã KH", Order.Ascending}, {"tiền", Order.Ascending}}): Sắp thứ tự theo mã tăng dần và số tiền tăng dần
...
Result = Table.AddColumn(Table.SelectColumns(Custom2,{"STT","Mã KH", "Mã khách hàng", "tiền"}), "Luyke", each Custom3{[STT] - 1}): Lấy 4 cột của bước Custom2, và thêm 1 cột Luyke, giá trị cột Luyke là kết quả tính Sum của bước Custom3