索引匹配公式根据相同条件返回重复值

索引匹配公式根据相同条件返回重复值

我正在尝试使用特定条件将主表中的数据填充到多个其他表中。

例如,如果用户输入了“过渡计划”的标准,则所有相应的行都会反映到标准选项卡中。

请参阅下面的截图

屏幕截图 1 屏幕截图 2 我使用了索引匹配,但它一遍又一遍地重复找到符合相同条件的值。

请告诉我我做错了什么?主列表是我从中提取这些数据的地方

=IFERROR(INDEX('主列表'!$B:$S,MATCH("过渡倡议",'主列表'!$F:$F,0),5),"")

  • 这是在我的 G 列中输入的,仅供参考,因为我只想填充符合此标准的相关数据

其他条件的填充字段使用此公式

=IFERROR(INDEX('主列表'!$B:$S,MATCH($G3,'主列表'!$F:$F,0),4),"")

请帮忙!

答案1

使用 AGGREGATE 检索第一、第二、第三等匹配项。

'to get all of the 'Transition Initiative' listed in column F
=iferror(index('Master List'!f:f, aggregate(15, 7, row($1:$999)/('Master List'!$f:$f="Transition Initiative"), row(1:1))), "") 
'to get associated data from column E using G3 and subsequent rows 
=if(g3="", "", iferror(index('Master List'!b:m, aggregate(15, 7, row($1:$999)/('Master List'!$f:$f=g3), row(1:1)), 4), ""))

如果主列表行数超过 999,请row($1:$999)进行更改。

在此处输入图片描述

顺便说一句,除了公式之外,还有其他更有效的方法。我立即想到了自动筛选和高级筛选。SQL 查询是另一种方法。VBA 可以使该过程自动化。

答案2

由于您尝试提取多行,因此可以使用 ARRAY(CSE)公式解决您的问题。

在此处输入图片描述

怎么运行的:

  • 将条件放入单元格中F70

不要使用条件,最好使用单元格引用作为条件,使公式动态化。

  • 单元格中F73用于提取相关数据的公式:

    {=IFERROR(INDEX(MasterList!$A$73:$D$79, SMALL(IF(COUNTIF(MasterList!$F$70,MasterList!$D$73:$D$79), ROW(MasterList!$A$73:$D$79)-MIN(ROW(MasterList!$A$73:$D$79))+1), ROW(A1)), COLUMN(A1)),"")}
    

单元格中的公式K73仅用于提取活动:

 {=IFERROR(INDEX(MasterList!$D$73:$D$79, SMALL(IF(COUNTIF(MasterList!$F$70,MasterList!$D$73:$D$79), ROW(MasterList!$D$73:$D$79)-MIN(ROW(MasterList!$D$73:$D$79))+1), ROW(A1)), COLUMN(A1)),"")}

  • INDEX & SMALL使用行号组合返回值。

{1, False, False, 4, False, False, 7}

其中第 1、4 和 7 行包含匹配的数据。

  • COUNTIF,将条件数组与行号进行匹配。

({1, 0, 0, 4, 0, 0, 7}, 1, 2, 3, 4, 5, 6,7)

第一部分显示匹配值的位置,第二部分显示总行数。

注意:

完成两个公式Ctrl+Shift+Enter,然后填充。

根据需要调整公式中的单元格引用和工作表名称。

相关内容