我正在尝试用相对引用替换硬编码引用 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。