EXCEL 怎么查询一个数据在数组中出现的第二/三/四..次的位置?

如题

先上公式:

H2=IFERROR(SMALL(IF($F$2:$F$8=G2,ROW($F$1:$F$7),""),COUNTIF(G$2:G2,G2)),"错误")

//低版本EXCEL要按组合键Ctrl+Shift+Enter完成输入

公式简析:

①IF($F$2:$F$8=G2,ROW($F$1:$F$7),"")  //当数组中有G2中的字符出现,返回其行号-1(因为有标题行占了1行),这里也可以用ROW($F$2:$F$8)-1,就是不够简洁

②COUNTIF(G$2:G2,G2)用来计算“被查找尺寸”第几次出现,也就是在数组中第几次出现的位置;

③用SMALL来找第②小的行号,如果找不到就会出错,此时用IFERROR返回“错误”。


-----补充回答-----

在H列已经写好的情况下,需要在I列未被找到的期望值,可以使用公式

I2=IFERROR(INDEX(G:G,SMALL(IF(H2:H10="错误",ROW(H2:H10),""),ROW(H1:H9)),),"")

//低版本EXCEL要按组合键Ctrl+Shift+Enter完成输入

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-06-13

需要辅助列:

需要的结果公式:

追问

增加一列,当查找值未出现过时,在该列呈现出该查找值
既 G4 在F列未出现,那么在J列列出所有未查找到的值,不是同行

本回答被提问者采纳
第2个回答  2023-06-13

若仅仅是按你目前的数据情况,如图,可在H2单元格输入公式:

=IFERROR(IF(COUNTIF(F$2:F2,G2)=0,INDEX(E:E,MATCH(G2,F:F,0)),LOOKUP(1,0/(F$2:F2=G2),E$2:E2)),"未找到")

复制并下拉填充,即可…………

第3个回答  2023-06-13
H2输入以下公式后同时按ctrl,shift,enter然后向下填充。
=iferror(small(if($f$2:$f$8=$g2,row($1:$7),""),row(a1)),"错误")