将一个单元格中的文本公式用作另一个单元格中的实际公式

18 浏览
0 Comments

将一个单元格中的文本公式用作另一个单元格中的实际公式

我在一个单元格中有0,4*A1(作为一个字符串)。如何将这个“字符串公式”转换成一个真正的公式,并在另一个单元格中计算其值?

0
0 Comments

问题的原因是,在一个单元格中使用文本公式作为另一个单元格中的实际公式时,如果在文本公式的开头使用了'=而不是=,则无法正确激活公式。解决方法是通过复制和粘贴文本到需要的位置,然后使用ctrl + H进行查找和替换。将'=替换为=,这样所有函数就会被激活。这个方法避免了使用VBA,并且非常简单有效。如果你的公式中不包含字符',你甚至无需使用撇号,只需将=替换为它本身即可。这个方法还可以用于在多个单元格中进行重复的类似编辑,使用查找/替换功能。首先用/=@=或其他你想要临时禁用公式但仍然显示为文本的形式禁用=,然后进行实际的查找/替换。最后一次查找/替换将/=@=等替换回=,这样公式就会重新进行计算。这个方法不会改变格式。一些用户还提到,在Excel 365 v2102版本中,使用查找和替换功能无法找到开头的',但将文本复制到记事本中再粘贴回来可以解决这个问题。这个方法被认为是非常聪明的,节省了大量时间。

0
0 Comments

在使用Excel时,有时候我们需要在一个单元格中使用一些文本公式作为另一个单元格中的实际公式。然而,Excel默认不允许直接将文本公式作为实际公式使用,这就导致了一个问题。

为了解决这个问题,有一种方法是使用VBA代码中的Evaluate函数。下面是一个使用Evaluate函数的示例VBA函数:

Function Eval(Ref As String)
    Application.Volatile
    Eval = Evaluate(Ref)
End Function

这个Eval函数接受一个字符串参数Ref,将其作为文本公式进行计算,并返回计算结果。在使用这个函数时,需要注意Eval函数默认是在活动工作表的上下文中进行计算的。这意味着如果活动工作表不同,那么Eval函数返回的结果也会不同。为了解决这个问题,可以使用如下形式的代码:

Application.ThisCell.Parent.Evaluate(Ref)

这样就可以限定Eval函数在调用它的工作表中进行计算。

值得注意的是,有用户在使用这种方法时遇到了一个问题。当要计算的字符串太长时,会出现"#VALUE!"的错误。经过测试,发现字符串必须严格控制在256个字符以下,否则会出现这个错误。这个问题在Excel 2010版本中出现。

通过使用VBA的Evaluate函数,我们可以将文本公式作为实际公式使用。然而,需要注意的是在使用Evaluate函数时要注意上下文的问题,并且字符串长度不能超过256个字符。

0
0 Comments

问题的原因是Excel 2013中对INDIRECT函数的功能进行了更改,导致无法将一个单元格中的文本作为另一个单元格中的实际公式。在Excel 2007版本中,可以使用INDIRECT函数来实现这个功能。

解决方法是在Excel 2013中使用以下公式:=B1*INDIRECT(C1),其中B1是一个包含实际公式的单元格,C1是包含文本值的单元格。这个公式将计算0.4乘以A1的值,并将结果显示在D1单元格中。例如,如果A1的值为10,则D1中将显示4。

然而,有人认为这个解决方法是错误的,正确的公式应该是=0.4*INDIRECT(A1),而不是=0.4*INDIRECT("A1")。因此,对于Excel 2013版本,应该使用=0.4*INDIRECT(A1)来达到相同的效果。

总之,Excel 2013中无法直接将一个单元格中的文本作为另一个单元格中的实际公式,但可以通过使用INDIRECT函数来实现类似的功能。在Excel 2007版本中,INDIRECT函数可以直接使用。

0