Bạn có bảng danh sách câu hỏi được bố trí chưa khoa học, và cần điều chỉnh lại cho hợp lý hơn. Bài này mình sẽ chia sẻ cách làm.
Bài toán: Gồm có danh sách câu hỏi, kèm đáp án đúng (được tích "x" ở cột Đáp án đúng). Hãy đưa nó thành bảng thống kê ngang và kèm theo phương án đúng vào cột riêng biệt.
Link: Onedrive
![]() |
| Thống kê lại bảng câu hỏi thành ngang |
Công thức:
1.=LET(a,A2:A45,b,B2:B45,c,IFS(C2:C45>0,LEFT(b)),REDUCE({"Câu hỏi/Phương án","A","B","C","D","Đáp án đúng"},SEQUENCE(MAX(a)),LAMBDA(x,y,VSTACK(x,HSTACK(y&". "&INDEX(b,MATCH(y,a,0)-1),TAKE(TOROW(EXPAND(FILTER(HSTACK(TEXTAFTER(b,"."),c),a=y),4,,""),2,1),,5))))))
2.=LET(d,{"A","B","C","D"},b,B2:B45,c,HSTACK(b,IFS(C2:C45>0,LEFT(b))),n,SCAN(0,b,LAMBDA(x,y,IF(SUM(COUNTIF(y,d&".*")),x,x+1))),REDUCE(HSTACK("Câu hỏi/Phương án",d,"Đáp án đúng"),UNIQUE(n),LAMBDA(x,y,VSTACK(x,TAKE(TOROW(EXPAND(TEXTAFTER("B."&FILTER(c,n=y),d&".",-1),5,,""),2,1),,6)))))
3.=LET(a,A2:A45,b,B2:B45,c,SEQUENCE(MAX(a)),IFNA(VSTACK(E1:J1,HSTACK(c&". "&FILTER(b,ISTEXT(a)),TRANSPOSE(DROP(REDUCE("",c,LAMBDA(v,w,HSTACK(v,FILTER(TEXTAFTER(b,". "),a=w)))),,1)),TEXTSPLIT(FILTER(b,C2:C45="X"),"."))),""))
4.=LET(a,A2:A45,b,B2:B45,c,ROW(a),d,IFNA(IFS({1,0;0,0},"Câu Hỏi/Phương Án"),DROP(PIVOTBY(HSTACK(XMATCH(a,a),a&". "&XLOOKUP(c,c/(ISTEXT(a)),b,,-1)),LEFT(b),TEXTAFTER(b,". "),SINGLE,,0,,0,,ISNUMBER(a)),,1)),HSTACK(d,XLOOKUP(LEFT(TAKE(d,,1))&"X",a&C2:C45,b,"Đáp án đúng")))
