参考引用单元格的公式而不是 Excel 中的值?,我希望看看是否有人能帮助我解决这种情况:
我得到了几个电子表格“Result1”、“Result2”……“Result50”。电子表格的前几行包含具有类似引用的各种公式,例如:
细胞 | 公式 |
---|---|
A1 | =sum(A10:A20) |
A2 | =average(A10:A20) |
A3 | =counta(A10:A20) |
在所有 50 个电子表格中。逐个修改公式会很困难。(例如 sum -> sumif,counta -> countif)所以我想知道我是否可以设置一个主电子表格“公式”(比如)来保存上述三个公式,并将这些“结果”电子表格上的单元格引用到“公式”中的单元格。
我知道正常引用只会给出值。但我真的想看看是否有更聪明的方法来处理这个问题。非常感谢。
答案1
我不知道这是否是你的意思,但请检查一下。
在此解决方案变体中,一个以一个参数(源地址)LAMBDA
命名的定义函数会从具有给定地址的单元格中检索公式,执行该公式的主体,并将结果放置在调用的位置。 如果源公式引用没有限定符的单元格,则目标工作表中的公式将引用当前工作表中的相同单元格。CLONE
LAMBDA
函数定义(在名称管理器中)
=LAMBDA(x, EVALUATE(FORMULATEXT(x)))
此公式使用旧的 XLM 宏函数EVALUATE
,因此工作簿必须以宏兼容格式保存,例如 .xlsm
例如,在Formula
工作表中的单元格中A1
有一个公式:
=SUM(A10:A20)
在Result1
工作表中输入以下条目:
=CLONE(Formula!A1)
此公式计算 的值SUM(A10:A20)
,但参数来自工作表Result1
。如果您现在将中
的公式更改为 ,中的结果将相应更改为。Formula!A1
=AVERAGE(A10:A20)
Result1
AVERAGE(A10:A20)
答案2
我发现至少有两个技巧可以让你更轻松地完成这项任务。
第一的:创建一个命名范围,例如使用名称rangeForCalculate
和公式INDIRECT("A10:A20")
,并在所有公式中使用此名称:
=SUM(rangeForCalculate)
=AVERAGE(rangeForCalculate)
=COUNTA(rangeForCalculate)
诀窍在于,由于字符串中没有指定工作表名称“A10:A20”,INDIRECT()
将引用使用名称的同一工作表中的指定范围rangeForCalculate
。现在要更改范围,只需更改此字符串“A10:A20”在命名范围内。
第二:保持原样。在编辑公式之前,按住 Ctrl 键单击所需工作表的选项卡以选择所需的工作表,或单击第一个选项卡并按住 Shift 键单击最后一个选项卡。现在编辑公式,更改后的公式将同时出现在所有选定的工作表中。