Microsoft excel中用于部分匹配字符串的嵌套if解决方案

Microsoft excel中用于部分匹配字符串的嵌套if解决方案,excel,function,Excel,Function,我正在尝试为excel中的一列中的嵌套if编写一个公式。 例如: 我想根据另一列中的匹配值自动获取一列中的值。 假设这两列是A和B。 如果A包含任何类似“Bank”的字符串,那么我希望B列是FGT\u Bank\u OSP。 如果A包含任何类似“PDM”的字符串,那么我希望B列是“FGT_PDM_OSP”。 同样,我还有25个其他值 我试图使用类似的东西,但tjis不起作用 =IF(ISNUMBER(SEARCH("DMT_Bank_Sensitive",E5)), "DMT_Bank_SEN_

我正在尝试为excel中的一列中的嵌套if编写一个公式。 例如: 我想根据另一列中的匹配值自动获取一列中的值。 假设这两列是A和B。 如果A包含任何类似“Bank”的字符串,那么我希望B列是FGT\u Bank\u 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")
样本数据: 我们在excel中有什么简单的方法或功能吗

获取自定义项的名称 在Excel中,例如,对于
A1
中的值,如下所示:

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

代码

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
选项显式
函数getNames(SearchString作为字符串_
可选不区分大小写1作为VbCompareMethod=0)作为字符串
模糊搜索姓名,返回姓名,我只要
'需要时添加更多值。也可以将其写入
'从范围中检索值。
SearchNames=数组(“银行”_
“CTAS”_
“PDM”)
ReturnNames=数组(“FDG\u银行\u物料”_
“FDG_CTAS_数据”_
“FDG\U PDM\U敏感”)
对于i=0到UBound(搜索名称)
如果InStr(1,SearchString,SearchNames(i),CaseInSensitive1)为0,则
getNames=ReturnNames(一)
退出
如果结束
接下来我
端函数
Get Names-UDF 在Excel中,例如,对于
A1
中的值,如下所示:

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

代码

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
选项显式
函数getNames(SearchString作为字符串_
可选不区分大小写1作为VbCompareMethod=0)作为字符串
模糊搜索姓名,返回姓名,我只要
'需要时添加更多值。也可以将其写入
'从范围中检索值。
SearchNames=数组(“银行”_
“CTAS”_
“PDM”)
ReturnNames=数组(“FDG\u银行\u物料”_
“FDG_CTAS_数据”_
“FDG\U PDM\U敏感”)
对于i=0到UBound(搜索名称)
如果InStr(1,SearchString,SearchNames(i),CaseInSensitive1)为0,则
getNames=ReturnNames(一)
退出
如果结束
接下来我
端函数

您是否有样本数据和预期结果的可视化表示?将样本数据与预期结果一起添加。检查列中的模式并相应地更新另一列中的值非常简单。我想说,在可能的输入和输出列表上应用VLOOKUP。Col1中的dat是否有如何用下划线来界定我们的目标?数据是否总是以“FDG”开头_“?@evilebluemonkey-第1列中的数据可能没有uu及其非分隔符。由于我们正在基于模式/包含进行匹配,因此不确定如何在此处使用vlookup。您是否有示例数据和预期结果的可视表示形式?添加了具有预期结果的示例数据。检查列中的模式并相应地更新另一列中的值,这一要求非常简单。我可以说,在可能的输入和输出列表上应用VLOOKUP。Col1中的dat是否总是用下划线来分隔我们的目标?数据是否总是以“FDG_uu”开头?@EvilBlueMonkey-第1列中的数据可能没有u及其非分隔符。不确定如何在此处使用vlookup,因为我们是基于模式/包含进行匹配的。