1

聪明人,

在 Excel 中,将数组公式包装在 SUM 中似乎不会在所有情况下产生数组内容的总和。(也就是说,在我看来;显然,我很可能会感到困惑。)

尝试在 Excel 中编写等效的内部联接时会出现这种情况。由于涉及 Excel for Mac 的原因,我在不使用 Visual Basic 或 MS Query 的情况下执行此操作:仅数组公式和 INDEX/MATCH。我认为,我已经成功了,除了这种我无法理解的奇怪行为。

目前我正在使用kludge,但不必这样做会很好。任何帮助或建议将不胜感激。

以下重现了该问题:

表格1

key | fkey
----+------
  a |   x
  a |   y
  b |   x
  b |   y

表 2

key | value
----+------
  x |   1
  y |  10

上面的布局应该代表这两个小表格在电子表格中的显示方式:没有发生任何聪明的事情。四个明显的范围被命名为table1.keytable1.fkeytable2.keytable2.value

所以,然后,内部连接。我想要表 2 中与表 1 中的特定键相对应的值,并在“table1.fkey=table2.key”上加入。输入公式:

{=("a"=table1.key)*INDEX(table2.value, MATCH(table1.fkey, table2.key, FALSE))}

分成两个垂直单元格给出所需的结果;即:

1
10

(酷,还是什么?)到目前为止,一切都很好。但现在我实际上想要上面两个数字的总和。所以我简单地将上面的公式包装在一个 SUM 中,然后在一个单元格中输入结果

{=SUM(("a"=table1.key)*INDEX(table2.value, MATCH(table1.fkey, table2.key, FALSE)))}

结果?

2

有谁知道到底发生了什么

詹姆士

4

1 回答 1

1

在单个元胞数组公式中使用时,INDEX 的 row_num 参数不能是数组。INDEX 函数总是返回 1。试试这个

=SUM(INDEX(table2.value,{2,1}))

它总是返回 10,因为 INDEX 只接受数组的第一个元素。我不知道为什么它们对于单单元格数组公式与多单元格的工作方式不同。

于 2009-04-30T20:25:35.230 回答