String 类似字符串VBA

String 类似字符串VBA,string,vba,excel,comparison,similarity,String,Vba,Excel,Comparison,Similarity,我正在尝试使用like运算符比较VBA中的类似字符串,但无法进行比较。我希望函数看到ESI Clinical Operations和ESI Commercial Custom/HIX是相同的,因为它们都是从ESI开始的。但出于某种原因,它不会这样做。要做到这一点,我最好的选择是什么?提前谢谢 Function SetInternalClientID() Sheet9.Activate Columns("J:J").Select Selection.Insert Shift:=xlToRigh

我正在尝试使用like运算符比较VBA中的类似字符串,但无法进行比较。我希望函数看到ESI Clinical Operations和ESI Commercial Custom/HIX是相同的,因为它们都是从ESI开始的。但出于某种原因,它不会这样做。要做到这一点,我最好的选择是什么?提前谢谢

Function SetInternalClientID()

Sheet9.Activate

Columns("J:J").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

Set rng2 = FindHeader("CLIENT NAME", Sheet9.Name)

Count = 0

For i = 73 To rng2.Rows.Count

Pattern = Left(rng2.Cells(i - 1, 1).Value, 6)

If Pattern = "Blue S" Or Pattern = "BCBS o" Then
    Pattern = Right(rng2.Cells(i - 1, 1).Value, 7)
ElseIf Pattern = "Health" Then
    Pattern = Left(rng2.Cells(i - 1, 1).Value, 8)
End If

ClientCheck = rng2.Cells(i, 1).Value Like Pattern

If ClientCheck = True Then

MsgBox (rng2.Cells(i, 1) & " Like " & rng2.Cells(i - 1, 1).Value)

Else

MsgBox (rng2.Cells(i, 1) & " NOT LIKE " & rng2.Cells(i - 1, 1).Value & " " & Pattern)

End If

Next i


End Function

我在下面添加了一些代码,这些代码应该可以帮助您完成这个过程。它是一个UDF,它使用
字符串
参数检查并将其与模式进行比较。代码将模式拆分为单个单词,并检查是否在
文本中找到了这些单词中的任何一个

我担心它会返回假阳性。很明显,您正在制作医疗/保险电子表格。“临床”(例如)一词是否可能在不同的行中重复出现多次?[安泰临床、ESI临床等]更好地定义匹配的术语可能是有益的

Function Modified_Like(strTextToCheck, strPattern) As Boolean
    Dim strArray() As String
    Dim bFound As Boolean
    strArray = Split(strPattern, " ")

    bFound = False

    For Each itm In strArray
        If InStr(1, strTextToCheck, itm, 1) > 0 Then
            bFound = True
            Exit For
        End If
    Next itm

    Modified_Like = bFound
End Function

没有模式,你不能像使用
那样使用
!你的模式是什么@Philip?@JLILIAman在这种情况下应该是ESI。我已经用我正在使用的函数编辑了我的问题。我使用子字符串函数来确定一个模式,但是对于上面问题中提到的两个较长的字符串,我没有得到任何匹配。我如何着手解决这个问题?rng2中有公式吗?
Function Modified_Like(strTextToCheck, strPattern) As Boolean
    Dim strArray() As String
    Dim bFound As Boolean
    strArray = Split(strPattern, " ")

    bFound = False

    For Each itm In strArray
        If InStr(1, strTextToCheck, itm, 1) > 0 Then
            bFound = True
            Exit For
        End If
    Next itm

    Modified_Like = bFound
End Function