检查类似的值VBA Excel
我在Excel vba中开发这个macros,它将遍历从a到zsorting的一列客户端名称,并检查哪些是相似的,并为它们分配与它相邻的列中相同的客户端ID。 我正在使用Like
运算符来比较名称,但由于某些原因,它没有find名称之间的相似之处。 例如,我想让它认为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
Like
运算符经常被混淆。 它不会简单地检查两个string是否匹配。 相反, Like
运算符左侧的值是要对运算符右侧的模式进行testing的string。 String_To_Test Like Pattern
有了这样的说法,像"Aetna Medical" Like "Aetna"
这样的expression方式就像"Aetna Medical" Like "Aetna"
会恢复正确,但是"Aetna" Like "Aetna Medical"
会返回False。
豪猪是正确的。 你将需要使用通配符? 和*在string的开头,结尾或中间。 如果两个string包含相似的文本,我也会考虑使用instr()返回一个值。