EXCEL:关键字有重复,其他信息一行多列显示

=INDEX(A:A,SMALL(IF(MATCH($A$2:$A$13,$A$2:$A$13,0)=ROW($A$2:$A$13)-1,ROW($2:$13),4^8),ROW(1:1)))&""
=INDEX($B:$B,SMALL(IF($A$2:$A$13=$E2,ROW($A$2:$A$13),4^8),COLUMN(A1)))&""
=INDEX($B:$B,SMALL(IF(($A$2:$A$13=$E2)*($c$2:$c$13="否"),ROW($A$2:$A$13),4^8),COLUMN(A1)))&""
按ctrl+shift+enter结束
EXCEL中如果公式很长,在编辑栏中选择公式一部分,按F9可得到选择部分公式的结果

公式一分析:
=INDEX(A:A,SMALL(IF(MATCH($A$2:$A$13,$A$2:$A$13,0)=ROW($A$2:$A$13)-1,ROW($2:$13),4^8),ROW(1:1)))&""
ROW($2:$13):显示区域对应的行号{2;3;4;5;6;7;8;9;10;11;12;13}
ROW($2:$13)-1:显示区域对应的行号{1;2;3;4;5;6;7;8;9;10;11;12}
MATCH($A$2:$A$13,$A$2:$A$13,0):精确匹配在区域A2:A13匹配a2的值,得到所在最行的最行号(除首行),
以a2‘张三’为例,其实际分别在第2行,结果为1
以a8‘张三’为例,其实际分别在第8行,结果为2
4^8=65536(特别大的数)
if()条件判断,第二行的‘张三’时1等于1成立,所以取row($a$2:$a$13)-1=1
第三行的“李四”时2等于2成立,所以取row($a$2:$a$13)-1=2
第四行的“王五”时2等于2成立,所以取row($a$2:$a$13)-1=3
第五行的“赵六”时2等于2成立,所以取row($a$2:$a$13)-1=4
第六行的“陈九”时2等于2成立,所以取row($a$2:$a$13)-1=5
第七行的“赵八”时2等于2成立,所以取row($a$2:$a$13)-1=6
第八行的‘张三’时1等于1成立,所以取row($a$2:$a$13)-1=65536
第九行的“李四”时2等于2成立,所以取row($a$2:$a$13)-1=65536
第十行的“王五”时2等于2成立,所以取row($a$2:$a$13)-1=65536
第11行的“赵六”时2等于2成立,所以取row($a$2:$a$13)-1=65536
第12行的“陈九”时2等于2成立,所以取row($a$2:$a$13)-1=65536
第13行的“赵八”时2等于2成立,所以取row($a$2:$a$13)-1=65536
small()取最小值,所以'张三'结果为1,依次类推,李四 王五 赵六 陈九 赵八分别为1,2,3,4,5,6
index()依次取第一种名字’张三‘,再取第二种名字‘李四’。依次类推,分别为'李四 王五 赵六 陈九 赵八’
公式2分析:
=INDEX($B:$B,SMALL(IF($A$2:$A$13=$E2,ROW($A$2:$A$13),4^8),COLUMN(A1)))&""
根据公式1的分析,该公式就是从B列查找相应的数据
公式3分析:
=INDEX($B:$B,SMALL(IF(($A$2:$A$13=$E2)*($c$2:$c$13="否"),ROW($A$2:$A$13),4^8),COLUMN(A1)))&""
实际增加了条件$c$2:$c$13="否" 或$c$2:$c$13="是"

posted @ 2021-07-10 08:34  myrj  阅读(252)  评论(0编辑  收藏  举报