Excel 公式:用简单的英语来说,INDEX(MATCH()) 中的这个数组是什么?

k..*_*k.. 2 worksheet-function microsoft-excel

我正试图用INDEX(MATCH())她在工作中继承的 Excel 帮助一位朋友,但这让我很难过。人们可以帮助我更好地了解它内部发生了什么吗?这是格式:

=INDEX(
    '[Spreadsheet2.xlsx]TabOfInterest'!$B$B
    ,
    MATCH(
        1
        ,
        (
            (D34='[Spreadsheet2.xlsx]TabOfInterest'!$M:$M)
            *
            (F34='[Spreadsheet2.xlsx]TabOfInterest'!$P:$P)
            *
            (K34='[Spreadsheet2.xlsx]TabOfInterest'!$Y:$Y)
        )
        ,
        0
    )
    ,
    1
)
Run Code Online (Sandbox Code Playgroud)

我可以看到,如果数字“1”(似乎代表“TRUE”,在这里)出现在某种 TRUEs/1s & FALSEs/0s 数组中的任何位置,这些数组是通过将其他布尔值填充的 AND 组合在一起构建的数组(但是这应该在 Excel 中工作......),然后 INDEX 将选择导致“1”出现在其中的任何混乱的“行号” ,并且 INDEX 将返回的值电子表格 2 在该行和 B 列交叉处的单元格。

但我不知道 MATCH 的第二个参数发生了什么。

我试图玩弄一个空白的电子表格,甚至无法推断出什么=(SingleCell=RangeOfCells) -或为此事,有什么=RangeOfCells呢-返回值似乎是取决于其单元格的公式键入到(它的行从数据偏移它正在检查),并且$在这些公式中的行号之前添加没有任何区别。

关于引用范围以及在单元格和范围之间进行“相等”比较的基本原理是什么,我是否需要知道才能更好地了解此公式中发生的事情以及最终INDEX(MATCH())要查找的内容?

到底是什么这阵?

(D34='[Spreadsheet2.xlsx]TabOfInterest'!$M:$M)
*
(F34='[Spreadsheet2.xlsx]TabOfInterest'!$P:$P)
*
(K34='[Spreadsheet2.xlsx]TabOfInterest'!$Y:$Y)
Run Code Online (Sandbox Code Playgroud)

另外,如果我不得不猜测,我想我会说整体功能是这样做的,但我无法解释原因让我感到困扰:

如果一行Spreadsheet2,其中所有三个条件都为真:

  • 此 INDEX-MATCH 所在的任何电子表格的单元格 D34 出现在 Spreadsheet2 的列“M”中,并且
  • 此 INDEX-MATCH 所在的任何电子表格的单元格 F34 出现在 Spreadsheet2 的列“P”中,并且
  • 此 INDEX-MATCH 所在的任何电子表格的单元格 K34 出现在 Spreadsheet2 的“Y”列中

然后返回 Spreadsheet2 中的单元格的值,B 列,无论电子表格 2 的行是什么-复合条件为真。

Ban*_*tch 5

让我们稍微简化一下,看看我们是否能弄清楚发生了什么。在下图中,我设置了 D1、E1 和 F1 来模拟公式中的 D34、F34 和 K34,并用值填充它们。对于咧嘴笑,我在前三个单元格下方添加了另外两行值。更多关于那些。

然后在 H、I 和 J 列中,我添加了与 M、P 和 Y 列等效的数组。我也将它们缩短了一点,主要是因为如果它们是整列,下面的调试技巧将不起作用。

在 G7 中,我只输入了上面公式的 MATCH() 部分。如包围它的大括号所示,它是一个数组公式。它是通过键入 CTRL-Shift Enter 输入的,Excel 会添加大括号。完成后,您可以再填充两行。很明显,MATCH() 函数给出了一些答案。

在此处输入图片说明

你是正确的,乘以逻辑值相当于 AND() 操作,除了它给出 1 和 0 作为结果而不是 True 和 False。例如,您可以通过键入=True*True=True*False在单元格中进行检查。

你问这个相当奇怪的数组中可能有什么(是的,它是一个数组)。那么让我们来看看 Excel 认为它的价值是什么。

单击其中一个公式,然后单击要查看其值的公式元素 - 在本例中,它是“lookup_array”。这将突出显示lookup_array,如下图所示。

在此处输入图片说明

现在按F9。这使 Excel 显示突出显示元素的

在此处输入图片说明

而Excel告诉我们,公式中高亮部分的值是数组{1;0;0;0;0}。如果您对 G8 和 G9 执行此操作,您将看到值分别为 {0;0;0;0;1} 和 {0;0;0;1;0}。所以 MATCH() 函数在这些数组中找到 1 的位置,即 1、5 和 4。

您可以这样想:lookup_array 的第一部分检查 D1 等于 H1:H5 的位置 - 该部分返回 {1;1;0;0;0}。然后检查 I1:I5 中的 E1 给出 {1;0;1;0;0}。检查 J1:J5 中的 F1 给出 {1;0;1;0;0}。对所有这三个进行 AND 运算得到 {1;0;0;0;0},这是 Excel 为整个(公认的奇怪)数组显示的结果。类似地,G8 中的公式找到 {0;0;0;0;1}, {0;1;0;0;1} 和 {0;0;0;0;1) 然后将它们与得到 {0; 0;0;0;1}。

您对发生的事情的猜测是正确的:MATCH()在 H、I 和 J 中找到具有与 D、E 和 F 中的单元格匹配的值的第一行(匹配类型 = 0),然后 INDEX() 返回该位置在 B 栏中。

您可以摆弄上面的值并自己检查一下。请记住使用 CTRL-Shift Enter 输入数组公式 - 您将经常这样做,因为 Excel 有一个错误/功能,即单击公式然后按回车或制表符会给出 #VALUE!错误。CTRL-Z 将撤消该操作。

希望这会有所帮助并祝你好运。