概括
谁能解释为什么 Excel(Mac 和 Windows 上的当前版本)有时拒绝在单元格公式中接受以下内容:
CHOOSECOLS(SomeArray,ColNum)
但它确实接受这一点:
INDEX(SomeArray,0,ColNum)
两个具体示例是在 SUMIF() 或 COUNTIF() 函数中使用这些形式的情况。当我说 Excel 拒绝接受前者时,我的意思是我什至无法让它接受它作为语法正确的公式。我注意到这些函数的非条件版本不会显示问题,MAX()、MIN()、AVERAGE() 等函数也不会显示问题。
细节
假设我在 B5:C10 中有一个数组(假设它是动态的,因此我可以在下面的示例中将其整齐地称为 B5#;但即使对于非动态范围也存在问题),并且我想对所有项目求和第 2 列(即 C5:C10)中大于 0。虽然 Excel 接受以下内容:
=SUMIF(INDEX(B5#,0,2),">0")
它拒绝接受:
=SUMIF(CHOOSECOLS(B5#,2),">0")
但是,如果我首先将所需的列提取到以 C16 为根的辅助数组中(比如说),如下所示:
=CHOOSECOLS(B5#,2)
那么以下被接受为正确的公式(并且它给出了正确的结果):
=SUMIF(C16#,">0")
我有一个 Excel 工作表,显示了该操作的实际情况,但我不确定附加它的最佳方法。如果它有用,并且有人可以解释如何附加 .xlsx 文件,我会提供它。同时,这是一个屏幕截图: