vba - 如何从excel中的if语句中提取 'logical_test'?

标签 vba excel

我正在整理一个用于计算的 excel 电子表格,我需要能够显示与决策相关的公式,在大多数情况下它非常简单,但是当我在一个 excel 单元格中找到一个“if”公式时,我不想显示 value_if_true 和 value_if_false ......只是logical_test 值。

示例:

公式为:=if(and(5<=A1, A1<=10),"Pass", "Fail");
结果将是:"and(5<=A1, A1<=10)"
我需要能够处理可能包括嵌套 if 语句的复杂逻辑测试,因此仅在逗号处拆分将无法可靠地工作。类似地,value_if_true 和 value_if_false 语句也可以包含 if 语句。

有任何想法吗?

最佳答案

如果对您的要求有清楚的了解,那么您可以使用这样的东西(只能与 IF() 语句一起使用:

Function extrIf(ByVal ifstatement As Range) As String

Dim S$, sRev$, x%, k
S = Replace(Replace(ifstatement.Formula, "IF(", "\"), "),", ")|")

sRev = StrReverse(S)

If InStr(1, sRev, "|") > InStr(1, sRev, "\") Or InStr(1, sRev, "|") = 0 Then
    x = InStr(1, StrReverse(Left(sRev, InStr(1, sRev, "\"))), ",") - 1
    S = Mid(S, 1, Len(S) - InStr(1, sRev, "\") + x) & "|"
End If

sRev = ""

For Each k In Split(S, "|")
    If k <> "" Then
        If k Like "*\*" Then
            sRev = sRev & ", " & Mid(k, InStr(1, k, "\") + 1, 999)
        End If
    End If
Next

extrIf = Mid(sRev, 3, 999)

End Function

例子:

enter image description here

测试:

enter image description here

也许这对您来说不是完整的解决方案,但我认为它可能会为您提供正确的方向。

关于vba - 如何从excel中的if语句中提取 'logical_test'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39028706/

相关文章:

javascript - 如何模拟 "Focus"和 "typing"事件

vba - Excel 2010 VBA - 循环 If then 语句

arrays - 使用 Excel VBA 评估一维数组中可变长度字符串的最大长度

java - 如果只给出事件点,如何绘制图表?

excel - 如何修改我的代码以使其运行得更快?

excel - 请参阅使用图标/表情符号作为名称一部分的工作表

vba - #值(value)!使用评估索引引用单个单元格范围时出错

excel - 合并 2 个 Excel 单元格的内容,保持字符格式不变(使用 VBA)

javascript - 使用 VBA 在 Internet Explorer 中自动化 Javascript 表单

javascript - 创建 csv 并使用 Photoshop 脚本写入它