簡體   English   中英

提取所有與 IF 語句(非嵌套)一起使用的邏輯測試條件並打印到單獨的列

[英]Extract all Logical test condition used with IF statement (not nested) and print to separate column

我有一個大約 100 行公式的列表。 每行包含一個單元格,其中包含 1/2/3/4/5/6 條 IF 語句。

我需要幫助來提取用於每一行的所有邏輯測試字符串,例如單元格 C2 包含:

=IF(Payload_Decode!AB74=Payload_Decode!Z92,"OK",IF(Payload_Decode!AB74=Payload_Decode!Z86,"OK",IF(Payload_Decode!AB74=Payload_Decode!Z87,"OK","ERROR")))

輸入變量:

  • E2 單元: Payload_Decode!AB74

單獨單元格中的比較變量:

  • G2 單元: Payload_Decode!Z92
  • H2 單元格: Payload_Decode!Z86
  • I2 單元: Payload_Decode!Z87

我需要所有行都發生這種情況。 這是一個解釋說明的屏幕截圖:

在此處輸入圖片說明

您並未嘗試自行解決此問題,這通常是本論壇的要求,但我發現該問題具有挑戰性,因此:

由於您已經包含了一個VBA標簽,這里是一個用戶定義的函數,使用正則表達式,可以做你想做的事。

該公式是一個數組公式。 如果您有最新版本的 Excel,帶有動態數組,您可以在E2輸入公式,結果將溢出到右側。

如果您沒有該功能,您可以通過包裝在INDEX單獨顯示公式的結果,或者您可以將其輸入為數組E2:J2

請閱讀 UDF 開頭的關於早期與晚期綁定的說明。

“設置對 Microsoft VBScript 正則表達式 5.5 的引用”或使用后期綁定

Option Explicit
Function inputCompVars(ByVal S As String) As String()
    Dim RE As RegExp, MC As MatchCollection, M As Match
    Const sPat As String = "\(([^=]+)=([^,]+)"
    Dim sTemp() As String, I As Long
Set RE = New RegExp
With RE
    .Global = True
    .Pattern = sPat
    If .test(S) = True Then
        Set MC = .Execute(S)
        ReDim sTemp(0 To MC.Count)
            sTemp(0) = MC(0).SubMatches(0)
            I = 0
            For Each M In MC
                I = I + 1
                sTemp(I) = M.SubMatches(1)
            Next M
    End If
    inputCompVars = sTemp
End With

End Function

這與以下內容一起使用:

E2: =inputCompVars(FORMULATEXT($A2))

或者,如果您沒有動態數組:

E2:  =IFERROR(INDEX(inputCompVars(FORMULATEXT($A2)),1,COLUMNS($A:A)),"")

並根據需要填寫。

在此處輸入圖片說明

如果您需要公式解決方案,並且有 Excel 2013+,您可以嘗試:

E2:  =FILTERXML("<t><s>" &SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(FORMULATEXT($A2),"=",","),"(",","),",","</s><s>")&"</s></t>","//s[contains(.,'Payload_Decode')][1]")

F2:  =IFERROR(FILTERXML("<t><s>" &SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(FORMULATEXT($A2),"=",","),"(",","),",","</s><s>")&"</s></t>","//s[contains(.,'Payload_Decode')][" & COLUMNS($A:A)*2&"]"),"")

並選擇F2並向右填充。

如果您有更早的版本,則需要讓我們知道是哪個版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM