Excel 在同一工作表中包含变量的字符串公式

Excel 在同一工作表中包含变量的字符串公式,excel,excel-formula,vba,Excel,Excel Formula,Vba,我对excel公式比较陌生,所以我不知道最好的方法,也不知道如何通过搜索找到一个好的答案 我有以下数据: 我想为每一行获取E列中包含的公式字符串,用同一行中的数据替换变量,并计算表达式。我不知道这是否可能,但我愿意尝试VB宏或任何需要的东西 使用上述思维: B8=总和(4+(8/2)) B9=总和(5+(6/2)) C8=总和(5+(6/2)) 等等 如果这是不可能的,我真正的首要目标是为公式建立一个单一的位置。我将有远远超过3列的数据,所以能够在一个位置更新它将是完美的为我。非常感谢您的帮助。

我对excel公式比较陌生,所以我不知道最好的方法,也不知道如何通过搜索找到一个好的答案

我有以下数据:

我想为每一行获取E列中包含的公式字符串,用同一行中的数据替换变量,并计算表达式。我不知道这是否可能,但我愿意尝试VB宏或任何需要的东西

使用上述思维:
B8=总和(4+(8/2))
B9=总和(5+(6/2))
C8=总和(5+(6/2))
等等


如果这是不可能的,我真正的首要目标是为公式建立一个单一的位置。我将有远远超过3列的数据,所以能够在一个位置更新它将是完美的为我。非常感谢您的帮助。

我尝试使用更具动态性的解决方案,使用
Vlookup
查找要相加的值

以下是我获取数据的方式(请注意,显示的公式很旧,请参见编辑):

前两个答案块分别为:

=SUM(VLOOKUP(“Az”$A$2:$D$6,column(),FALSE)+(VLOOKUP(“Cx”$A$2:$D$6,column(),FALSE)/2))
=SUM(VLOOKUP(“By”,“A$2:$D$6,column(),FALSE)+(VLOOKUP(“Ev”,“A$2:$D$6,column(),FALSE)/VLOOKUP(“Dw”,“A$2:$D$6,column(),FALSE))

…然后拖过去

但我意识到,您最终希望能够更快地编辑公式变量,因此我的第二个答案(第11行和第12行)使用F、G和H列查找变量:

=SUM(VLOOKUP($F$11,$A$2:$D$6,COLUMN(),FALSE)+(VLOOKUP($G$11,$A$2:$D$6,COLUMN(),FALSE)/2))

=SUM(VLOOKUP($F$12,$A$2:$D$6,COLUMN(),FALSE)+(VLOOKUP($G$12,$A$2:$D$6,COLUMN(),FALSE)/VLOOKUP($H$12,$A$2:$D$6,COLUMN(),FALSE))

这能让你达到你想要的目的吗?我在想一种方法,可能是使用
indirect()
ro更直接地使用
E8
E9
,所以如果你编辑这些公式,其他公式也会改变

编辑-这里是“最佳”解决方案,您只需编辑
E8
E9
中的变量名,公式就会自动更新。(如果您按照上面我的布局),在
B8
中使用
=SUM(VLOOKUP(MID($E$8,SEARCH(“(”,$E$8)+1,2),$A$2:$D$6,COLUMN(),FALSE)+(VLOOKUP(MID($E$8,SEARCH(“+(”,$E$8)+2,2),$A$2:$D$6,COLUMN(),FALSE)/2))

B9
中,
=SUM(VLOOKUP(MID($E$9,SEARCH(“(”,$E$9)+1,2),$A$2:$D$6,COLUMN(),FALSE)+(VLOOKUP(MID($E$9,SEARCH(“+”,$E$9)+2,2),$A$2:$D$6,COLUMN(),FALSE)/VLOOKUP(MID($E$9,SEARCH(“/”,$E$9)+1,2),$A$D$6,COLUMN(),FALSE))/code>


这样,如果你想求和,比如说
sum(Cx+(Ev/2))
你所要做的就是编辑
E8
到该公式,那么
B8
中的答案1将自动更新。

使用定义的名称和实际编写的公式

选择数据从列
A开始的所有行
然后单击主选项卡“公式”\在组定义名称中单击“从选择创建”

然后将公式复制到第8行和第9行的相应列中

请注意,根据所选内容创建的已定义名称是在工作簿级别添加的,如果有其他类似的工作表,则可能会出现问题…可以通过在工作表级别创建名称来解决此问题,而不是使用“定义名称”选项


使用

它永远是一个求和公式吗?@SiddharthRout就目前的情况来看,是的,它永远是一个求和公式++好问题!让我思考了很长一段时间这是一个很好的问题;陈述得很好,考虑得很周全,你展示了你的期望。做得很好!这与我所寻找的非常接近。我实际上是在t超级谷歌搜索你提到的间接方法以更直接地使用它们的过程。这对我来说是最理想的情况,尽管这也可以奏效。@Blankdud-我只是用一个更可靠的公式编辑了我的文章。它不是
indirect()
但是,据我所知,它应该适合你。注意:如果你的变量名超过两位数,你需要调整
Mid()
公式以返回
3
个位置,而不是
2
。啊哈,聪明的想法…摆脱了使用复杂的公式。另外,+1对于我来说,因为我从未见过“创建名称”弹出窗口,很高兴知道!@BruceWayne,谢谢,我看到的唯一可能的问题是名称是在工作簿级别创建的,如果有其他类似的工作表,这可能是一个问题…@SiddhartRout谢谢。不过,可以通过在工作表级别创建名称来解决。现在将此添加到答案中…我正要发布一个vba决心,但这很好,而且容易得多。@SiddharthRout这太棒了。干净,简单,对新手友好。非常感谢EEM和其他所有花时间帮助的人。