2017-07-06 91 views
0

我用Excel计算一个字符串值,其中评估()工作正常允许在名称管理器,我使用评价() am 不是允许在VB A中使用它,因为该文件被转换为.xls。这是问题。计算文本公式(NO VBA和NO评估)

我有100秒的长式的例子:

($F$10+0)+($F$11+0.125)+($F$10+0.0625) 

,我需要单独评估方括号之间的值。
我能够式分离以

A1 is ($F$10+0)   
A2 is ($F$11+0.125)  
A3 is ($F$10+0.0625) 

我想把一个符号“=”此字符串的前面和计算A1,A2,和A3的值。
但是我不允许在文件管理器中使用函数EVALUATE(),它在单元格中不起作用,我不允许使用VB A编写公式。
是否有替代品用于评估我可以使用?
谢谢

回答

0

欢迎来到Excel的黑暗面。

如果你不能使用:

1)VBA

2)宏

3)评估()

4)文件管理器/定义名称

然后没有简单的公式可以帮助你(加上你不能自己做)。微软多年来故意没有解决这个问题。

因此,您可以自己设备在Excel单元格中创建自己的解析器。

如果您有各种类型的公式可能会改变符号,或者处理的单元格数量很多,或者公式可能采取的任何其他疯狂操作,这可能会非常困难。

但是......如果您对公式的表达方式有偏差的最小数量......您可以写一些能够实现这一功能的东西。

这带来了一个警告......公式必须每次都提供相同的参数。你给出的例子是,每个公式的结构定义完全相同。

因此,因此,使用您的例子,你可以这样写代码列A2:

=INDIRECT(MID(A1,SEARCH("$",A1),SEARCH("+",A1)-SEARCH("$",A1)),TRUE)+MID(A1,SEARCH("+",A1)+1,LEN(A1)-SEARCH("+",A1)-1) 

然后你可以在代码复制到B2和C2。

这会给你正确的数学,就好像它是一个公式。

所需要这个工作的结构参数为:

1)单元格地址必须始终以美元开始符号$

2)小区地址必须紧跟着一个加号+

3)只有单次添加作为式

4)完成的加号后的操作数必须是数字

5)的公式必须用括号结束)

6)不能伤害到开始括号或者(

而且由于所有公式坚持这一结构...公式我提供的将会工作。

如果您需要更改项目3以允许“减法”,那么您将需要在公式中添加if语句,并且它将变得非常快速地变得复杂。不可能?不,但是一个巨大的混乱?是。

无论如何,这应该适用于您拥有的所有限制。那是......如果你的公式不偏离已经提供的结构。如果你有不同的公式结构,你需要让我们知道他们......或者更好,写下自己的代码。

希望这有助于。 :)

+0

谢谢阿布拉。我会等待一些更多的反馈,但是这样做会有诀窍,正如你所说的有局限性。我有时在括号之间有3个部分,或者有时在里面有乘法。我必须仔细研究这一点,看看我是否可以生成助手公式,但这是一个很好的开始 对我来说,MS有很多惊人的缺陷。我正在使用ERP。他们在后台使用Excel。他们是有限的 - 不是MS。我认为大多数ERP公司不配拥有数十亿美元的产业。他们只是试图适应一个圈子的方形来销售和勾住你的生活 – Ramz

+0

大声笑......你可能对许多ERP来说都是正确的。和“玩弄”是有趣的部分。 :)是的,把它分成3个部分可能会很棘手,特别是在混合中乘法。 PEDMAS现在是一个问题。在编写复杂的Cell代码时,我发现将每个函数分解到它自己的单元格中并且有很多单元格调用以前的单元格会更容易。所有在不同的工作表上,以便我可以记录所有的疯狂行为。然后在最后将它们合并成一个笨重的公式以粘贴回主页面。 “文件”是那里的关键词。 – abraxascarab