索引 - Match 命令语法

索引 - Match 命令语法

我想要扫描一个有 10 列和 17 行且大多数单元格为 0 的数组。

我需要从上到下逐行扫描,并希望突出显示工作表 L3 位置处的数字 1 的首次出现索引(第 1 行,为 5)。

您可能会看到,值 1 首先出现在 E10 处。

我无法理解要输入哪个 Excel 公式才能获得值 5(第 1 行对应于 E10 列的索引),因为在 E 列中第一次检测到 1,它应该在 L3 处打印值 5。

在此处输入图片描述

答案1

我不确定这是否适合你,但你可以使用公式

=MATCH(1,A3:J3,0)
在 L3 中,然后向下拖动到 L20。结果将显示在哪一列中找到第一次出现的搜索字符串。以下是示例:

在此处输入图片描述

如果这个相当笨拙的解决方案不起作用,我认为需要一个用户定义函数来获得你想要的东西。这不会太难,只需几个 for/next 循环。我可能可以写出来,但由于我并不总是写代码,所以可能需要一点时间。

答案2

我找到了解决您问题的方法。在 L3 中使用以下公式:

=INDEX(A1,J1,1,MATCH(1,INDIRECT("A"&SMALL(IF(A3,J20=1,ROW(A3,J20),5000),1)&":J"&SMALL(IF(A3:J20,ROW(A3:J20),5000),1)),0))

解释:

  • A1:J1 是查找范围
  • 1 是查找行
  • SMALL(IF(A3:J20=1,ROW(A3:J20),5000);1)查找包含 1 的所有行,然后返回最小值(我添加了 5000 以确保 if 的 false 选项肯定不是此数组中的最小数字)
  • 然后使用 INDIRECT 函数构建一个“行”,MATCH 可以通过该行搜索要在 INDEX 中使用的正确数字

如果我的回答不清楚,您可以随时提出其他问题。

相关内容