Excel 中有数百个内置函数。有什么方法可以确认内置函数是否在数组公式中有效?例如,我无法让 RANK 在数组公式中起作用。似乎(我可能错了)它不支持数组公式。
在哪里可以找到任何参考资料,最好是来自 Microsoft 的,其中明确指出是否存在任何内置 Excel 函数在数组公式中基本上不受支持?Excel 帮助在这里没什么用。
这将有助于确定是否需要对我的数组公式进行进一步调试,或者确定它不起作用。
谢谢
答案1
计算过程中始终存在的一个经验法则是,每当用户需要执行具有一系列值或一个值需要生成许多中间值的计算时,就需要一个对象或数据处理程序,其元素数量与值数量相同,基本上称为变量或数组的元素。
每种编程语言都提供了声明变量和变量数组的命令。
例如在 Visual Basic 中,
Dim MyArray(2) 作为字符串
MyArray(0)=“A”
MyArray(1)=“AB”
如果需要,我们可以使用这些元素作为它们的数据类型。
现在返回 Excel,这里的基本原理也类似。但是 Excel 不允许声明变量或数组。因此单元格地址可以水平或垂直用作元素。
例如,在 E1、F1、G1、H1 和 I1 中简单地写入 5、6、7、8 和 9。然后在 E3 中写入此 CSE 公式,{=SUM(E1:I1*{1,2,3,4,5})},您将得到答案 115。
Excel 计算如 E1*1 + F1*2 + G1*3 + H1*4 + I1*5 得出 5、12、21、32、45 等于 115。
移调始终是 CSE 公式。
因此结论是,无论何时需要进行此类计算,都可以使用数组公式。在 Excel 中,我们通常称之为 CSE(Control+Shift+Enter)公式。
我确实希望上面的文字能够帮助您决定何时需要数组公式。
另外,发布您的排名公式以及您正在努力处理的相关数据,我会尝试简化它。
答案2
具体来说,对于数组中 RANK.xx() 的使用,我已通过 LARGE 或 SMALL 与 MATCH 和 SEQUENCE 解决了这个问题。我知道这并不能回答“知道 Excel 函数是否适用于数组”的问题,但我的声誉不足以添加评论。
=LET( randmatrix, RANDARRAY( 12 ),
MATCH( LARGE( randmatrix, SEQUENCE( 12 ) ), randmatrix, 0 ) )
上述公式会生成一串随机数字,然后对它们进行排序。
这是针对一个虚构问题提出的荒谬解决方案,但正如你所指出的,这是行不通的:
=LET( randmatrix, RANDARRAY( 12 ),
RANK.EQ( randmatrix, randmatrix ) )
MATCH LARGE SEQUENCE 说明了通过其他方式模拟 RANK 的技术。我曾经遇到过 RANK 在数组中不起作用的确切问题,所以我用这个解决了这个问题。