我正在整理一个用于计算的 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
例子:
测试:
也许这对您来说不是完整的解决方案,但我认为它可能会为您提供正确的方向。
关于vba - 如何从excel中的if语句中提取 'logical_test'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39028706/