gpt4 book ai didi

excel - 使用 VBA 解析和扩展具有变量的代数方程

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:38:57 25 4
gpt4 key购买 nike

我正在处理一个 VBA 脚本,该脚本正在解析用户输入的字符串以供以后评估。我已经设法将其归结为以下内容,其中字母是包含字符串、数字或其他稍后评估的函数的变量。它们在具有未指定变量的 AND/OR 语句中进行比较,因此我不能提前评估它。因此,我简化了这个:

( ( [$$FIELD_1] [$$REL_GREATER_THAN] [$$FUNC_ROUND_OPEN] 6000.25 
[$$FUNC_ROUND_CLOSE] AND [$$FIELD_1] [$$REL_LESS_THAN] [$$FUNC_ABS_OPEN]
[$$FUNC_FLOOR_OPEN] - 7000.99 [$$FUNC_FLOOR_CLOSE] [$$FUNC_ABS_CLOSE] OR
[$$FIELD_1] [$$REL_LESS_THAN] [$$FIELD_3] ^ 2 + 8 ) AND ( [$$STRING_1] &
[$$STRING_2] & [$$STRING_3] [$$REL_NOT_EQUAL] [$$FIELD_5] & [$$STRING_4] &
[$$FIELD_4] ) ) OR [$$FIELD_6] [$$REL_EQUAL] [$$STRING_5]

通过用变量替换 bool 值,我用乘法替换 AND,用加法替换 OR:

( ( A * B + C ) * ( D ) ) + E

我现在需要做的是使用代数的分配属性将其扩展。结果看起来像

A*B*D + C*D + E

然后我可以开始将值代入其中。

项的顺序并不重要,只需将其分组为乘法或加法即可。它已成为一个比我最初想象的要难得多的问题,因为我需要它足够强大以处理其他方程式,而不仅仅是这个特定的例子。

我一直在寻找内置于 VBA 中的可以自然地执行此操作的东西,但我还没有找到任何东西。这是一个类似的问题,但对于 Java 和 C:Parse non standard form to standard form in java .不幸的是,那里唯一的答案基本上可以归结为“只是解析它”......这是我需要帮助的部分。

我如何以编程方式计算出这些分布展开式?有这方面的算法吗?

最佳答案

假设你有一个带方程的字符串

equation = "( ( 2 * 3 + 2.5 ) * ( -2.5 ) ) + 1.9"

你可以评估

MsgBox equation & " = " & Evaluate(Replace(equation, ",", "."))

Replace 是为了确保您将点作为小数点分隔符

这是一个工作片段,其中我使用 Dictionary 来跟踪名称变量及其值:

Dim equation As String
equation = "( ( A * B + C ) * ( D ) ) + E"

Dim varDict As Scripting.Dictionary
Set varDict = New Scripting.Dictionary

With varDict
.Add "A", 2# ' assigning variable "A" the value 2.0
.Add "B", 3 ' assigning variable "B" the value 3.0
.Add "C", 2.5 ' assigning variable "C" the value 2.5
.Add "D", -2.5 ' assigning variable "D" the value -2.5
.Add "E", 1.9 ' assigning variable "E" the value 1.9
End With

Dim key As Variant
For Each key In varDict ' loop all variables
equation = Replace(Replace(equation, key, varDict(key)), ",", ".") ' replace each variable name within 'equation' string with its corresponding value, and make sure you use dots for decimal separator
Next

MsgBox equation & " = " & Evaluate(equation) ' show the result

关于excel - 使用 VBA 解析和扩展具有变量的代数方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53909184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com