Dữ liệu có đơn giá từng loại quả và số thành tiền tổng. Bạn cần:
- Tạo các đơn gồm nhiều hơn 1 loại quả.
- Tổng doanh số từng đơn bằng số cho trước.
- Kết quả gồm các loại quả cùng số lượng tương ứng.
Link: Onedrive
![]() |
| Tạo đơn nhiều loại quả, tổng doanh thu đơn bằng số cho trước |
Sẽ được cập nhập khi thay đổi số tiền:
![]() |
| Cập nhập khi thay đổi số tiền |
Công thức:
1.=LET(a,TOCOL(IFS(SEQUENCE(5,4),B2:B6)),MAP(UNIQUE(MID(FILTER(REDUCE(0,a,LAMBDA(x,v,VSTACK(x,x&","&v))),REDUCE(0,a,LAMBDA(x,v,VSTACK(x,x+v)))=D2),3,99)),LAMBDA(s,LET(m,XLOOKUP(--TEXTSPLIT(s,,","),B2:B6,A2:A6),TEXTJOIN({": ",", "},,GROUPBY(m,m,ROWS,,0))))))
2.=LET(a,TRANSPOSE(A2:B6),b,D2,c,DROP(a,1),d,INT(b/c)+1,e,MOD(INT(SEQUENCE(PRODUCT(d),,0)/(SCAN(1,d,PRODUCT)/d)),d),BYROW(FILTER(e,(BYROW(N(e=0),SUM)<4)*(BYROW(e*c,SUM)=b)),LAMBDA(r,TEXTJOIN(", ",,IF(r,TAKE(a,1)&": "&r,"")))))
3.=LET(a,MID(REDUCE(0,B2:B6,LAMBDA(x,v,VSTACK(x,x&-v))),3,99),z,REDUCE(0,FILTER(a,ISNUMBER(FIND("-",a))),LAMBDA(x,v,VSTACK(x,LET(b,--TEXTSPLIT(v,"-"),c,INT(D2/b),d,SEQUENCE(MAX(c)),e,IF(c>=d,b*d),m,BYCOL(e,COUNT),n,PRODUCT(m),l,INDEX(e,MOD(SEQUENCE(n,,0)/n*SCAN(1,m,PRODUCT),m)+1,SEQUENCE(,COLUMNS(e))),k,IFERROR(WRAPROWS(TOCOL(l/(BYROW(l,SUM)=D2),3),COLUMNS(b)),""),BYROW(IF(k="","",XLOOKUP(b,B2:B6,A2:A6)&": "&k/b),ARRAYTOTEXT))))),FILTER(z,LEN(z)>1))
4.Python (Xem trong file)

