本帖最后由 swyrlbq 于 2013-4-22 15:48 编辑
=INDEX(A:A,RIGHT(SMALL(IF(COLUMN($A:$F)=6,ROW($2:$27),IF(MMULT(LARGE((COUNTIF($A$2:$B$28,$A$2:$B$28)=2)*ROW($1:$27)+{1,2}/1%,ROW($1:$26)+27*(COLUMN()-5)+{1,0})*{-1,1},{1;1})>COLUMN($A:$F),LARGE((COUNTIF($A$2:$B$28,A$2:A$28)=2)*ROW($2:$28),ROW($1:$26)+(COLUMN()-5))+(COLUMN()-5)-1%,99)),ROW(1:1)),2))&""
优化公式,把countif第一参数,改为引用整列,可减少字符,但运算减慢;一列需要0,二列需要1,用(column()-5),3个就用了36字符,如果可以引用变为(B1=0)这样,公式变为E2:E53数组公式,可大大减少字符,但就公式本身无有大改进。255字符
E2:E53=INDEX(A:A,RIGHT(SMALL(IF(COLUMN($A:$F)=6,ROW(2:27),IF(MMULT(LARGE((COUNTIF($A:$B,$A1:$B27)=2)*ROW(1:27)+{1,2}/1%,ROW(1:26)+27*(B1=0)+{1,0}),{-1;1})>COLUMN($A:$F),LARGE((COUNTIF($A:$B,A1:A27)=2)*ROW(1:27),ROW(1:26)+(B1=0))+(B1=0)-1%,99)),ROW(1:52)),2))&""
发现如果只有一个重复,或没有重复,公式会出错,进一步完善:
E2:E53=INDEX(A:A,RIGHT(SMALL(IF(COLUMN($A:$AA)=27,ROW(1:27),IF(MMULT(LARGE((COUNTIF($A:$B,$A1:$B28)<>1)*(29-ROW(1:28))+{1,2}/1%,(B1=0)*28+ROW(1:27)+{0,1}),{1;-1})>COLUMN($A:$AA),SMALL((COUNTIF($A:$B,A1:A28)=1)*99+ROW(1:28),ROW(2:28)-(B1=0))+(B1=0)-1%,99)),ROW()),2))&""
|