我正在Excel vba中开发这个宏,它将循环遍历从a到z排序的客户端名称列,并检查哪些是相似的,并在与其相邻的列中为它们分配相同的客户端ID。我使用Like
运算符来比较名称,但由于某种原因,它没有了解名称之间的相似之处。例如,我希望它认为Aetna和Aetna Medicaid是相同的,因为它们都包含Aetna。我不确定这个操作符是否意味着这样做,如果不是,那么最好的方法是什么。我已粘贴下面的代码。它处于初步阶段,所以现在只输出MsgBox
而不是分配客户端ID。此外,范围由函数定义,该函数仅将其设置为一列范围。任何帮助将不胜感激!
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
ClientCheck = rng2.Cells(i, 1).Value Like rng2.Cells(i - 1, 1).Value
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)
End If
Next i
End Function
答案 0 :(得分:2)
Like
运营商经常感到困惑。它不仅仅检查两个字符串是否匹配。相反,Like
运算符左侧的值是要针对模式测试的字符串,该模式位于运算符的右侧。
String_To_Test Like Pattern
用那句话说,表达如下:
"Aetna Medical" Like "Aetna"
将返回true,但"Aetna" Like "Aetna Medical"
将返回False。
答案 1 :(得分:0)
豪猪是对的。你需要使用通配符吗?和*在字符串的开头,结尾或中间。如果两个字符串包含相似的文本,我还会考虑使用instr()返回一个值。