Tìm Số Hóa Đơn Cho Từng Ngày

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.
Ví dụ: Ngày 03/07 có các số hóa đơn: 4, 7, 12, 13, 14, 8. Sẽ có các nhóm liên tục 7, 8 và 12, 13, 14 nên kết quả là: 4, 7-8, 12-14.
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)
Đăng nhận xét (0)
Mới hơn Cũ hơn