Excel中提取一列中各个具有相同名字,且根据各相同名字所对应另一列中数值,取数值第二小的行?

如第一列中aaa名字有3个,其对应列中值1,2,3,那么列出aaa,2 对应的行, 其他名字依次。如果某个名字,只有1个,则直接取改行。如下图所示。

E1单元格输入公式=SMALL(IF(A$1:A$11=D1,B$1:B$11),IF(COUNTIF(A$1:A$11,D1)=1,1,2))

数组公式,同时按下 Ctrl+Shift+Enter组合键结束公式,使公式前后产生大括号后下拉公式。 如图:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-09-08

E1=SMALL(IF(A:A=D1,B:B),1+(COUNTIF(A:A,D1)>1))

数组公式

追问

谢谢你的回答,如何先生成D列中的数据呢?

追答

有3个办法:
1,最方便的是复制a列到d列,点击数据-删除重复项即可。
2,如果是office365用户,可以用公式:=UNIQUE(A:A)
3,一般用户,又要用公式,可以用:=INDEX(A:A,SMALL(IF(A$1:A$999=A$2:A$1000,9999,ROW(A$1:A$999)),ROW()))

本回答被提问者采纳
第2个回答  2021-09-08
在E1中输入或复制粘贴下列数组公式
=IF(COUNTIF(A:A,D1)=1,VLOOKUP(D1,A:B,2,),LARGE(IF(A$1:A$11=D1,B$1:B$11),2))

=IF(COUNTIF(A:A,D1)>1,LARGE(IF(A$1:A$11=D1,B$1:B$11),2),VLOOKUP(D1,A:B,2,))
按三键CTRL+SHIFT+ENTER结束公式输入
下拉填充追问

非常感谢谢你的回答,我想问下怎么先列出所用相同名字,生成D列中数据。

追答

复制A列,粘贴到D列。选择D列,删除重复值。
也可用公式。

追问

多谢,多谢。如果a,b列后面还有对应多列其他数据,如下图,如何选取a列中各个名字相同且对应b列数值第2小,所对应的行。能否在新的sheet中生成提取的结果。

第3个回答  2021-09-08
E1用公式:
=IFERROR(SMALL(IF(A:A=D1,B:B),2),SMALL(IF(A:A=D1,B:B),1))
数组公式,按组合键(CTRL+SHIFT+回车)完成公式,下拉。追问

谢谢你的回答,请问下我怎样先列所有相同名字,生成D列中的数据呢?

追答

用公式:
=INDEX(A:A,SMALL(IF(MATCH(A$1:A$1000&"",A$1:A$1000&"",)=ROW($1:$1000),ROW($1:$1000),9^9),ROW(A1)))

这个是数组公式,按组合键(Ctrl+Shift+回车)完成公式,下拉。

相似回答