如何用单元格引用替换它包含的公式,换句话说,是“扩展”或“派生”单元格引用?
一个例子,我知道我可以使用PV()进行计算:假设我想计算给定数量,减速器,期数和折现率的现值,并且在电子表格中具有:]
A2:1(周期数)B2:5000(金额)C2:0.8(减速器)G1:6%(折扣率)
如果我想计算D2上的最终结果,则必须输入:
=(B2 * C2)*(1 + $ G $ 1)^(-A2)
((我在上面故意使用了一些不必要的括号)
但是如果我想调试,或通过嵌套更多的计算来构建更复杂的公式,请写在单元格上:
D2:= E2 * F2 ^ G2E2:= B2 * C2F2:= 1 + $ G $ 1G2:= -A2
以便我可以检查计算的每个部分是否正常,并且最终公式是否“正确组装”(或轻松纠正可能出问题的地方,或对其进行更改以计算其他内容,例如终值,我会删除G2上的减号。
并在执行了这些步骤之后,在单元格D2上使用了一些要替换的功能/快捷方式/功能
“ = E2 * F2 ^ G2”
for
“ =(B2 * C2)*(1 + $ G $ 1)^(-A2)”
(即E2→(B2 * C2)F2→(1 + $ G $ 1)和G2→(-A2)),这样所需的公式就建立在正确的位置,我可以除去临时单元格。
我能找到的最接近此行为的是Formulatext()函数,但它仅适用于单个引用,例如,如果我这样做,则总是包含“ =”]]
= CONCAT(FORMULATEXT(E2);“ *”; FORMULATEXT(F2);“ ^”; FORMULATEXT(G2))
结果
= B2 * C2 * = 1 + $ G $ 1 ^ =-A2
这不是期望的结果。
我期望找到的东西就像选择一个公式的一部分并按F9并将其替换为值,但应用于函数或中间步骤时一样。
我如何用单元格引用替换它包含的公式,换句话说就是“扩展”或“派生”单元格引用?一个例子,我知道我可以使用PV()计算它:假设我想...
由于它似乎在Excel上实际上不存在内置功能,因此我根据Parsing and extracting cell references from Excel formulas?的答案提出了一个用于执行此操作的脚本>
在Excel 365上运行(也可以在其他版本上使用),仅替换活动单元格上的引用,不适用于包含间隔的单元格(例如,它将在包含= sum(A1:A5)的单元格上失败),并且先前单元格的内容将最终用括号括起来。它也不会替换“锁定”的单元格(= $ B $ 2也不会被替换)。
总的来说,它并不完美,也许也不是很优雅,但是它似乎和我需要的一样好,并且可以在建议的范围内工作。