VBA文本比较

时间:2014-06-12 13:38:07

标签: excel-vba vba excel

我对VBA比较陌生,我正在尝试编写一个比较两列数据(名字和姓氏)的宏。在遍历列时,任何时候第一个名字=姓氏(即它们都是空白或说是UNKNOWN)我希望清除第9列中的单元格,并且第10列中的单元格得到UNKNOWN值。

截至目前,代码正确识别名字和姓氏相同的任何时间。我的问题是,任何时候第一个名字是任何姓氏的子字符串(即单元格I2 = David J2 = Jones,I3 = Joseph J3 = Davidson)David与Davidson进行比较并随后被删除。

我花了一段时间寻找类似的问题,到目前为止我还没能适应我的问题。提前感谢您的帮助。

 Sub compare_cols()

Dim Report As Worksheet
Dim i As Integer, j As Integer
Dim lastRow As Integer

Set Report = Excel.ActiveSheet

lastRow = Report.UsedRange.Rows.count 

Application.ScreenUpdating = False

For i = 1 To lastRow ' This will find all identical pairs of cells in I,J (blank, blank) or (unknown, unknown). I stays blank, J gets UNKNOWN
    For j = 1 To lastRow    ' I think its currently erasing any matches (ex. if someones first name is James, it will get erased if there is a last name jameson)
            If InStr(1, Report.Cells(j, 10).Value, Report.Cells(i, 9).Value, vbTextCompare) > 0 Then
                Report.Cells(i, 9).Value = ""
                Report.Cells(i, 10).Value = "UNKNOWN"
                Exit For
            Else
            End If
    Next j
Next i
Application.ScreenUpdating = True
End Sub

1 个答案:

答案 0 :(得分:0)

与其他一些语言不同,您可以使用" ="来比较vba中的字符串。签名,这将找到完全匹配,这是你正在寻找的。尝试

if Report.Cells(j, 10) = Report.Cells(i, 9) etc.