Bảng 1 là dữ liệu bán hàng theo từng khách hàng. Bảng 2 là sự thay đổi mã khách hàng (sẽ có những khách hàng được thay đổi mã nhiều lần). Bạn cần tính tổng doanh thu theo mã khách hàng mới nhất.
Ví dụ: Khách hàng C-2 đã được đổi thành C-12, sau đó tiếp tục đổi thành C-14. Vậy sẽ cần tính theo mã C-14 mới nhất, và nó gồm doanh thu của các mã C-2, C-12, C-14.
Link: Onedrive
![]() |
| Tính tổng doanh thu theo khách hàng, với mã ID mới nhất |
Công thức:
1.=LET(f,LAMBDA(f,x,LET(a,IFNA(VLOOKUP(x,E2:F7,2,),x),IF(AND(x=a),a,f(f,a)))),b,f(f,B2:B35),DROP(GROUPBY(HSTACK(--TEXTAFTER(b,"-"),b),C2:C35,SUM,,0),,1))
2.=LET(x,REGEXEXTRACT(REDUCE(B2:B35,{1,2,3},LAMBDA(a,w,IFNA(VLOOKUP(a,E2:F7,2,0),a))),{"\d+$",".+"}),DROP(GROUPBY(IFERROR(--x,x),C2:C35,SUM,,0),,1))
3.=LET(a,REDUCE(B2:B35,ROW(1:9),LAMBDA(x,v,IFNA(XLOOKUP(x,E2:E7,F2:F7),x))),b,UNIQUE(a),SORTBY(HSTACK(b,MAP(b,LAMBDA(x,SUM((x=a)*C2:C35)))),--TEXTAFTER(b,"-")))
4.=LET(a,REDUCE(B2:B35,F2:F7,LAMBDA(x,v,IF(x=@+E7:v,v,x))),DROP(GROUPBY(HSTACK(--TEXTAFTER(a,"-"),a),C2:C35,SUM,,0),,1))
5.=LET(f,LAMBDA(x,IFNA(VLOOKUP(x,E2:F7,2,0),x)),a,f(f(f(B2:B35))),b,UNIQUE(a),SORTBY(HSTACK(b,MAP(b,LAMBDA(s,SUM((a=s)*C2:C35)))),--TEXTAFTER(b,"-")))
6.Python (Xem trong file)
