
=LET(cs,BYROW(DROP(REDUCE("",UNIQUE(D3:D22),LAMBDA(m,n,HSTACK(m,IF(D3:D22<>n,"",SCAN("",D3:D22,LAMBDA(x,y,LET(gs,COUNTIF(B3:B8,y),IF((OFFSET(y,-1,)<>n)*(x>=gs)*(y=n),1,IF(y=n,x+1,x))))))))),,1),SUM),tj,MAP(B3:B8,LAMBDA(x,COUNTIF(B3:x,x))),XLOOKUP(D3:D22&cs,B3:B8&tj,A3:A8,""))
有点长:主要是第二个辅助列有点长,费脑子。思路就是红框的那个编号数字。BYROW(DROP(REDUCE("",UNIQUE(D3:D22),LAMBDA(m,n,HSTACK(m,IF(D3:D22<>n,"",SCAN("",D3:D22,LAMBDA(x,y,IF((OFFSET(y,-1,)<>n)*(x>=3)*(y=n),1,IF(y=n,x+1,x)))))))),,1),SUM)
这段是辅助列的公式