指数匹配公式不断延续

Index Match Formula Keeps Continuing

我正在尝试创建一个仪表板,从下拉列表中选择一家公司后,它将列出该公司的所有银行家,其中数据位于另一个工作表选项卡上。

到目前为止,Index Match 公式似乎 运行 没问题,但是,它一直在 运行 并列出其他公司的银行家。我该如何解决这个问题?

文件可以在这里下载:https://drive.google.com/file/d/1fw7yh4AEF1vx3cuG6E_1RBTrTD_k74KD/view?usp=sharing

请将此公式应用于您的 sheet 的 E5 并复制下来。请注意,我创建了指代 RAW!B2:B279.

的命名范围 Coms
=IFERROR(IF(INDEX(Coms,MATCH($C,Coms,0)+ROW()-ROW(E))=$C,INDEX(Coms,MATCH($C,Coms,0)+ROW()-ROW(E)),""),"")

如果您愿意,可以将公式中的名称替换为您原来的地址,或者您定义命名范围以动态扩展。

您可以通过在单元格 E5 中粘贴以下公式来尝试以下方法:

=IFERROR(INDEX(RAW!$D:$D9,SMALL(IF(RAW!$B:$B9=$C,ROW(RAW!$D:$D9)-1,10^10),ROWS($A:A1))),"")

这是数组公式,需要按CTRL+SHIFT+ENTER[=42=提交] 然后根据需要将其复制下来。

解释:

INDEX 是根据行和列引用从定义的 GRID 中检索范围引用。

在这种特殊情况下,我们打算按顺序提取引用。这是由 SMALL(IF(RAW!$B:$B9=$C,ROW(RAW!$D:$D9)-1,10^10),ROWS($A:A1))

执行的

在这个公式中,第一部分是如下的ARRAY构建IF公式

IF(RAW!$B:$B9=$C,ROW(RAW!$D:$D9)-1,10^10) 测试 B 列中的单元格是否匹配标准值。如果该值匹配,则 ROW 引用被 return 编辑,如果不匹配,则它 return 是一个非常大的值,即 10^10。我们从行引用中减去 1,因为数据从第 2 行开始,所以原则上它应该是 (n-1)。这种安排为值 "Acorda".

生成一个类似 {1;2;3;4;5;6;7;10000000000....} 的数组

但是我们需要一次将一个元素传递给 INDEX 公式,所以这是通过 SMALL(IfBasedArray,k) 完成的,其中 k 部分由 ROWS($A:A1) 连续生成,从 1 开始并随着公式向下递增被复制,从而使 INDEX 达到 return 所需的结果。

最后,当比赛结束时,输入大数字,即 10000000000 并生成一个错误,然后由 IFERROR 公式将其覆盖为 return 空白!

比前面 2 个答案更简单的选项(不需要 CSE 数组输入公式或多个嵌套 INDEX/MATCHES)将有几个 'helper' 单元格 [=26] =]

起始行将是 =MATCH(C5,RAW!B:B,0) 这会在您的 RAW sheet 中找到所选公司出现的第一行

顾问计数将是 =COUNTIFS(RAW!B:B,C5) 计算该特定公司有多少行

然后单元格 E5 中的公式变为 =IF(D5<=$G,INDEX(RAW!$D:$D,$G+D5-1),""),您可以将其向下拖动。

screenshot showing formulas/result