Dữ liệu là số đánh các hạng mục của các danh mục. Bạn cần thống kê các đầu số được đánh bắt đầu...đến...(dựa vào STT được đánh liên tiếp hay không). Và chèn thêm cột mà các đầu số còn thiếu của từng đầu danh mục.
Ví dụ: Với danh mục đầu, có STT 1,2,3 liên tiếp nên sẽ vào 1 nhóm. Nhóm sau sẽ chỉ có STT 8, và bị thiếu các số từ 4 đến 7 (bạn cần liệt kê chúng lại).
Bài toán giúp bạn dễ dàng kiểm tra các số đã được đánh cho các tập hồ sơ, và còn thiếu các số để dễ dàng điều chỉnh.
Link: Onedrive
![]() |
| Thống kê STT bị thiếu theo từng đầu mục của các danh mục |
Công thức:
1.=SORTBY(REDUCE({"Danh mục","Missing","From","To"},B2:B20,LAMBDA(a,n,LET(l,INDEX(a,ROWS(a),4),d,n-1-N(l),IF((l=n-1)*(OFFSET(n,-1,-1)=OFFSET(n,,-1)),VSTACK(DROP(a,-1),HSTACK(TAKE(a,-1,3),n)),VSTACK(a,HSTACK(OFFSET(n,,-1),IF(d>0,TEXTJOIN(", ",,SEQUENCE(d,,l+1)),""),n,n)))))),{1,4,2,3})
2.=LET(q,SCAN(,B2:B20=N(+B1:B19)+1,LAMBDA(a,d,IF(d,a,a+1))),REDUCE(D1:G1,UNIQUE(q),LAMBDA(a,d,LET(e,FILTER(A2:B20,q=d),w,TAKE(e,1,1),c,MIN(e),i,TAKE(a,-1),v,MAX(i),VSTACK(a,HSTACK(w,c,MAX(e),ARRAYTOTEXT(IF((w=TAKE(a,-1,1))*(c<>MIN(i)),SEQUENCE(c-v-1,,v+1),""))))))))
3.=LET(a,A2:B20,b,TAKE(a,,1),c,TAKE(a,,-1),d,VSTACK(1,SCAN(1,(DROP(c,-1)+1<>DROP(c,1))+(DROP(b,-1)<>DROP(b,1)),LAMBDA(x,v,x+(v>0)))),e,UNIQUE(d),u,XLOOKUP(e,d,c,,,{1,-1}),VSTACK(D1:G1,HSTACK(XLOOKUP(e,d,b),u,VSTACK("",MAP(DROP(u,1,-1)-DROP(u,-1,1)-1,DROP(u,-1,1),LAMBDA(x,v,ARRAYTOTEXT(IFERROR(SEQUENCE(x,,v+1),""))))))))
4.=REDUCE(D1:G1,UNIQUE(A2:A20),LAMBDA(x,v,VSTACK(x,LET(a,FILTER(A2:B20,A2:A20=v),b,DROP(a,,1),c,b-VSTACK(99,DROP(b,-1)),DROP(GROUPBY(HSTACK(SCAN(0,c<>1,SUM),TAKE(a,,1)),HSTACK(b,b,IFERROR(MAP(c-1,b,LAMBDA(x,v,ARRAYTOTEXT(SORT(SEQUENCE(x,,v-1,-1))))),"")),HSTACK(MIN,MAX,SINGLE),,0),1,1)))))
