Excel:使用 ADDRESS 创建数组公式

Excel:使用 ADDRESS 创建数组公式

我正在尝试用相对引用替换硬编码引用 E13:E15:

=+SUM(LN(INDIRECT("E13:E15")))

我在单元格 e16 中尝试了以下变体,但似乎没有任何效果:

=+SUM(LN(INDIRECT(ADDRESS(ROW()-3,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN()))))

我收到 #VALUE! 错误。我认为这是因为数组引用不太正确,但我不确定它应该是什么。

是的,我一直在使用 ctrl-shift-enter。

答案1

ROW 和 COLUMN 函数即使它们是单个值也会返回“数组”,例如 {3} 而不仅仅是 3,而其他一些函数无法处理这种情况 - 您可以通过将每个 ROW 和 COLUMN 函数包装在 SUM 函数中来测试,然后公式应该可以工作(尽管您的 INDEX 建议可能更简单)

您可以通过使用带有 R1C1 符号的 INDIRECT 来简化相对引用,例如

=SUMPRODUCT(LN(INDIRECT("R[-3]C:R[-1]C",0)))

使用 SUMPRODUCT 而不是 SUM 只是为了避免“数组输入”。

答案2

我找到了一个解决方案;将 LN 函数的内容包装在 INDEX 里面。

=SUM(LN(INDEX(INDIRECT(ADDRESS(ROW()-3,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())),0,0)))

与 control-shift-enter 配合良好。

有人能解释一下为什么需要 INDEX 吗?因为它是一个数组引用,所以它是必需的吗?

答案3

根据您的坐标,数组引用是正确的。

您正在尝试求出单元格范围的自然对数之和。难道您不应该尝试求出单元格范围之和的自然对数吗?

在公式中交换 SUM 和 LN。

相关内容