如何根据电子表格中另一个单元格中的值动态更改公式中的输入单元格?

How do I dynamically change input cell in a formula based on the value in another cell in a spreadsheet?

是否可以根据另一个单元格中的内容动态更改公式中的输入单元格地址?

假设我有一个包含这些单元格值的电子表格(excel 或 libreoffice):

A1: 10
A5:  9
C1:  5

而不是硬编码 =A1-A5 ,我想做这样的事情:=A1-A(C1),这将在 运行 时间进行评估,以使用单元格 A5 作为第二个输入。

使用 INDIRECT 将 C1 中的值作为指向 A 列中所需行的指针:-

=A1-INDIRECT("A"&C1)

(在 Open Office 和 Excel 2010 中测试)

对于这种动态引用,你需要INDIRECT函数。它有两个参数 INDIRECT(reference,style)

reference,包含单元格、单元格文本区域或命名范围的文本字符串

style 一个布尔值,如果省略或为 TRUE,则表示引用是 A1 样式,如果为 FALSE,则引用使用 R1C1 样式。

所以在你的情况下你可以使用

INDIRECT("A"&C1)

INDIRECT("R1C"&C1,FALSE)

非挥发性¹ 解决方案是 INDEX function

'for Excel
=A1-INDEX(A:A, C1)
'for OpenOffice
=A1-INDEX(A:A48576; C1)



¹ 每当整个工作簿中的任何内容发生变化时,可变函数都会重新计算,而不仅仅是当影响其结果的某些内容发生变化时。 volatile 函数的示例是 INDIRECT, OFFSET, TODAY, NOW, RAND and RANDBETWEEN. Some sub-functions of the CELL and INFO 工作表函数也会使它们变易变。