为什么在SUM中包装Excel数组公式不会产生这种情况下的内容总和?

StackOverflow https://stackoverflow.com/questions/808011

  •  03-07-2019
  •  | 
  •  

聪明人,

在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.key table1.fkey table2.key table2.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

有没有人任何想法究竟发生了什么?

詹姆斯

有帮助吗?

解决方案

当在单个单元格数组公式中使用时,INDEX的row_num参数不能是数组。 INDEX功能始终返回1.尝试此

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top