我有一个复杂的公式,我想在表格中使用它,同时绘制更改公式中一个单元格的效果的图表。
=($E$9+J2)-((($B$9+J2)+($B$23*200*$B$15)+(1E+99-1)*(($B$9+J2)*(1.1+(1-$B$23)*(0.75+($B$22*$B$15*0.4))*$B$15)+($B$23*200*$B$15)+$B$23*(FLOOR.MATH(1E+99/3)*200*$B$15/MAX(1,1E+99-1))))*$B$12/1E+99)*($E$9+J2)/((($E$9+J2)+($E$23*200*$E$15)+(1E+99-1)*(($E$9+J2)*(1.1+(1-$E$23)*(0.75+($E$22*$E$15*0.4))*$E$15)+($E$23*200*$E$15)+$E$23*(FLOOR.MATH(1E+99/3)*200*$E$15/MAX(1,1E+99-1))))*$E$12/1E+99)
如您所见,我尝试使用替代来简化一些重复功能。
=($E$9+J2)-SUBSTITUTE($B$29,$B$9,($B$9+J2))*$E$9/SUBSTITUTE($E$29,$E$9,($E$9+J2))
这不起作用,因为替代实际上是在转换结果将函数转换为字符串并搜索实例而不是转换函数本身。
如果我们使用计算机语言进行编程,我们可以简单地调用具有不同参数的方法,但我不确定 Excel 是否能够做到这一点。
====
为了说明这个“简化”电子表格中的挑战,我有两个公式
| A | B | C |
1 | 1 101 202
2 | 100
单元格 B1 有此公式
=A1+A2
单元格 C1 中有此公式
=SUBSTITUTE(B1,A1,A1*2)
我希望单元格 C1 为 102 而不是 202。有没有办法在公式中替换 A1 的每个实例而不是生成的字符串?
答案1
我认为根据你在评论中展示的内容,最接近你想要的应该是
=LET(x,A1*2,y,A2,x+y)
。
如果您需要解析 B2 中的公式,您可能需要在 VBA 中编写公式解析器。但将整个公式编写为 VBA UDF 可能更简单。
注意:LET
仅适用于最新版本的 Excel O365