检查VBA Excel的类似值

时间:2015-02-20 21:31:21

标签: excel vba function excel-vba similarity

我正在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

2 个答案:

答案 0 :(得分:2)

Like运营商经常感到困惑。它不仅仅检查两个字符串是否匹配。相反,Like运算符左侧的值是要针对模式测试的字符串,该模式位于运算符的右侧。 String_To_Test Like Pattern

用那句话说,表达如下: "Aetna Medical" Like "Aetna"将返回true,但"Aetna" Like "Aetna Medical"将返回False。

答案 1 :(得分:0)

豪猪是对的。你需要使用通配符吗?和*在字符串的开头,结尾或中间。如果两个字符串包含相似的文本,我还会考虑使用instr()返回一个值。