看似简单,其实很复杂。哦哦!
源数据在A列:
在B1输入
=INDEX(A:A,SMALL(IF(LEN(A$1:A$100)<>0,IF(CODE(A$1:A$100)>45216,IF(LEN(A$1:A$100)=LENB(ASC(A$1:A$100))/2,ROW(A$1:A$100),4^8),4^8),4^8),ROW(1:1)))&""
数组公式,输入后先不要回车,按Ctrl+Shift+Enter结束计算,再向下填充。
在C1输入
=IF(OR(INDIRECT("A"&MATCH($B1,$A:$A,)+COLUMN(A1))="",MATCH("end",INDIRECT("A"&MATCH($B1,$A:$A,)):$A$100,)<=COLUMN(A1)),"",INDIRECT("A"&MATCH($B1,$A:$A,)+COLUMN(A1)))回车并向右填充,再向下填充。
补充:
另外,第二道公式(C列)还不完美,B列没数据时会返回“值不可用”错误(#N/A),在判断“IF(OR(),)”里加上“B1="",”作为平行条件还不行,只能增加一级,还行!但公式就长了一些啦,现修改为:
=IF($B1="","",IF(OR(INDIRECT("A"&MATCH($B1,$A:$A,)+COLUMN(A1))="",MATCH("end",INDIRECT("A"&MATCH($B1,$A:$A,)):$A$100,)<=COLUMN(A1)),"",INDIRECT("A"&MATCH($B1,$A:$A,)+COLUMN(A1))))回车并向右填充,再向下填充。