假设数据在A列
=REPT(INDEX(OFFSET($A$1,,,COUNTA($A

A),),SMALL(IF(MATCH(OFFSET($A$1,,,COUNTA($A

A),),OFFSET($A$1,,,COUNTA($A

A),),0)=ROW(INDIRECT("$1

"&COUNTA($A

A))),ROW(INDIRECT("$1

"&COUNTA($A

A))),8^8),1),),3)
有几个元素后面就&这个公式几次,把标红的数字按元素个数往下递增
例如两个元素就是
=REPT(INDEX(OFFSET($A$1,,,COUNTA($A

A),),SMALL(IF(MATCH(OFFSET($A$1,,,COUNTA($A:$A),),OFFSET($A$1,,,COUNTA($A:$A),),0)=ROW(INDIRECT("$1:$"&COUNTA($A:$A))),ROW(INDIRECT("$1:$"&COUNTA($A:$A))),8^8),1),),3)&REPT(INDEX(OFFSET($A$1,,,COUNTA($A:$A),),SMALL(IF(MATCH(OFFSET($A$1,,,COUNTA($A:$A),),OFFSET($A$1,,,COUNTA($A:$A),),0)=ROW(INDIRECT("$1:$"&COUNTA($A:$A))),ROW(INDIRECT("$1:$"&COUNTA($A:$A))),8^8),2),),3)
公式是数组公式
如果用VBA公式就简单多了
不过我这会午休,懒得写....
[
本帖最后由 icybamboo 于 2016-3-9 12:47 编辑]