如果Microsoft Excel中的解决方案针对部分匹配的字符串,则嵌套

时间:2020-05-01 08:55:09

标签: excel function

我正在尝试在excel的其中一列中为嵌套编写公式。 例如: 我想根据另一列中的匹配值自动获取一列中的值。 假设两列是A和B。 如果A包含“ Bank”之类的任何字符串,那么我希望B列为FGT_Bank_OSP。 如果A包含“ PDM”之类的任何字符串,那么我希望B列为“ FGT_PDM_OSP”。 同样,我还有其他25个值。

我尝试使用类似的方法,但是tjis无法正常工作。

=IF(ISNUMBER(SEARCH("DMT_Bank_Sensitive",E5)), "DMT_Bank_SEN_OSP", IF(ISNUMBER(SEARCH("DMT_PDM_Sensitive",E5)), "DMT_PDM_SEN_OSP"),"No")

样本数据:Sample Data 我们在excel中有任何简单的方法或功能吗?

Sample Data 2

1 个答案:

答案 0 :(得分:0)

获取名称UDF

在Excel中,例如对于A1中的值,请按以下方式使用它:

=getNames(A1)

或者如果不区分大小写(A = a,B = b),请使用:

=getNames(A1,1)

bathman

代码

Option Explicit

Function getNames(SearchString As String, _
  Optional CaseInSensitive1 As VbCompareMethod = 0) As String

    Dim SearchNames, ReturnNames, i As Long

    ' Add more values when needed. This can also be written to
    ' retrieve values from a range.
    SearchNames = Array("Bank", _
                        "CTAS", _
                        "PDM")

    ReturnNames = Array("FDG_Bank_Material", _
                        "FDG_CTAS_Data", _
                        "FDG_PDM_Sensitive")

    For i = 0 To UBound(SearchNames)
        If InStr(1, SearchString, SearchNames(i), CaseInSensitive1) <> 0 Then
            getNames = ReturnNames(i)
            Exit For
        End If
    Next i

End Function