Dữ liệu gồm số hóa đơn theo từng ngày. Bạn cần:
- Tạo tổng hợp các số hóa đơn theo từng ngày.
- Mỗi ngày nhiều số hóa đơn và không được sắp xếp.
- Nếu số hóa đơn có liên tiếp (dù không sắp xếp) bạn cần nối gọn lại. Ví dụ 7, 8, 9 sẽ thành 7-9.
Link: Onedrive
![]() |
| Tìm số hóa đơn theo ngày |
Công thức:
1.=REDUCE({"Ngày","Số hóa đơn"},UNIQUE(B2:B30),LAMBDA(x,v,VSTACK(x,LET(a,SORT(FILTER(A2:A30,B2:B30=v)),f,LAMBDA(x,UNIQUE(VSTACK(a,MODE.MULT(a+x*{1,0})),,1)),b,f(1),c,f(-1),HSTACK(v,ARRAYTOTEXT(b&REPT("-"&c,b<c)))))))
2.=LET(b,B2:B30,c,UNIQUE(b),HSTACK(c,MAP(c,LAMBDA(x,LET(a,SORT(FILTER(A2:A30,b=x)),ARRAYTOTEXT(DROP(GROUPBY(SCAN(0,a<>VSTACK(0,DROP(a,-1))+1,SUM),a,LAMBDA(s,IF(ROWS(s)=1,@s,@s&-MAX(s))),,0),,1)))))))
3.=GROUPBY(B1:B30,A1:A30,LAMBDA(s,LET(a,SORT(s),MID(CONCAT(CHOOSE(MMULT(-ISNA(XMATCH(a+{1,-1},a)),{1;3})/2+3,", "&a,-a,"")),3,99))),3,0)
4.=GROUPBY(B2:B30,A2:A30,LAMBDA(a,LET(x,TEXTSPLIT(SORT(a),,", ")+0,MID(CONCAT(IF(ISERROR(MATCH(x-1,x,0)),", "&x,IF(ISERROR(MATCH(x+1,x,0)),-x,""))),3,99))),,0)
5.=GROUPBY(B1:B30,A1:A30,LAMBDA(v,LET(x,SORT(v),REGEXREPLACE(TEXTJOIN(IFERROR(IF(DROP(x,1)=DROP(x,-1)+1,"-",", "),x),,x),"(-\d+)+","$1"))),3,0)
6.Python (Xem trong file)
