是否有数组参数调用的内置Excel函数的行为的任何文档?

Excel的许多内置函数可以使用数组参数。 有时结果logging在帮助中,有时不logging。 所以:

=IF({1,0,1}, 42, 99) 

将返回{42,99,42}。 “IF”的帮助涵盖了数组参数。 但:

 =INDEX({2,3,5,7,11}, {2,4}) 

将返回{3,7}。 这是直观的,但我找不到一个微软的源文件。 和:

 =INDEX({1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16}, {1,3},{2,4}) 

返回{2,12},这是不直观的。

有没有涵盖这些不太常见的arrays用法的来源? 似乎必须有一个,但我没有find它在networkingsearch,因为它需要使用“Excel”,“function”,“arrays”…

编辑:

我很习惯使用数组公式,并且始终使用它们,但我讨厌必须弄清楚试验和错误会发生什么。 这个特定的问题出现在我正在做(简化的等价物)时:

 =IF(ISNA(udf()), {1,2,3,4}, {5,6,7,8}) 

“udf”返回的位置是{1,2,3},公式正在计算{5,6,7,#N / A}。 这令我感到惊讶,即使我能弄清楚发生了什么事情,并且解决了这个问题。 这只是让我感到不可思议,我找不到一个权威的资料来源。

更多:

借助这里的答案,以及我在Superuser上交叉发布的答案(http://superuser.com/questions/203177/is-there-any-documentation-of-the-behavior-of-built -in-excel-functions-called-wit),让我试着更精确地描述数组公式如何“工作”。 我的问题的关键是要找出是否存在一个类似的精确的,但官方的(或至less是权威的)的描述 ,这个描述也填补了这个描述中的缺失部分。

所以在这里。 (我复制并修改了超级用户的Neal的第一部分):

当您使用一个或多个数组参数代替公式中的标量参数时,公式将计算与数组参数的元素数相同的数组。 结果数组的每个(标量)元素是公式将使用数组参数(s)的相应(标量)元素计算的值。

你可以用function性的程序来思考这个问题。 Excel基本上变成了一个公式:

 =IF({1,0,1}, 42, 99) 

进入一个function:

 f(x) = IF([x], 42, 99) 

然后将其映射到标量x值列表中:

 map(f, {1,0,1}) 

得到{42,99,42}。 多个数组参数只是意味着概念函数有更多的参数:

 f(x, y) = INDEX({1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16}, [x], [y]) 

接着:

 map(f, {1,3}, {2,4}) 

评估为{2,12}。

如果多个数组参数长度不一样,Excel将尝试扩展它们。 从而,

 =IF({1,1,1}, {1,2,3,4}, {5,6,7,8}) 

因为{1,1,1}扩大到{1,1,1,#N / A},而IF(#N / A,4,8)评估,所以将其评价为{1,2,3,#N / A}到#N / A。

这个描述涵盖了大部分我能想到的例子。 它也显示我不需要如何处理数组参数的逐个函数的描述。 像SUM或AND这样的函数不像IF或INDEX那样工作,因为它们不一定期望标量参数。 (尽pipe如此,INDEX({2,3,5,7,11},{2,4})在工作表中被调用时的值为{3,7},但如果通过VBA调用,则只能调用3使用Application.Evaluate。而SUM(INDEX({2,3,5,7,11},{2,4}))的计算结果为3,无论在哪里以及如何调用。

我简直不敢相信微软或者其他主要的Excel作者之一从来没有在这个例子中发表任何东西,尽pipe它们很有帮助。 希望Charles Williams在他的回答中提到的“Microsoft Excel扩展数组公式”的讨论是我正在寻找的“官方”来源。

我非常怀疑任何有关数组的Excel函数行为的文档存在。

当Excel曾经与手册一起有一个有趣的部分叫
“Microsoft Excel如何扩展数组公式”
这解释了关于处理不匹配数组大小和标量等组合的规则,但我无法在Excel帮助或Web上find这些信息。
还有一个部分授权特殊函数帮助您处理数组,包括与数组一起工作的函数列表(虽然我不相信这会给你你正在寻找的东西)。
编辑
我在http://www.decisionmodels.com/optspeedj.htm上添加了Excel数组展开规则的说明

文档通常涵盖了函数的function,而不是每个可能的公式的用例。 MSFT在数组公式上有许多页面; 这两个可能是最好的介绍:

  • 把基本的数组公式工作
  • 使高级数组公式工作

后面会介绍如何使用INDEX的数组公式。

使用你的INDEX的例子,我们看到一个表被创build,看起来像这样:

 Col 1 2 3 4
 
    1 1 2 3 4
    2 5 6 7 8
    3 9 10 11 12
    4 13 14 15 16

基于索引查询,您要求行1和3以及列2和4(Excel公式是INDEX(array, row_num, [column_num]) )。 因此,第一个查询(第1行,第2列)的结果是2 ,第二个查询(第3行,第4列)是12

如果您将{1,4}replace为行, {4,1}replace列,那么结果将是4和13,因为4是(行1,列4)的值,13是(行4,第1栏)。

即使最基本的function可以用于数组参数,例如。 LOG()…

 =INDEX(LOG(A1:C3),2,2) 

但是我从来没有见过这个logging在任何地方