我对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
答案 0 :(得分:0)
与其他一些语言不同,您可以使用" ="来比较vba中的字符串。签名,这将找到完全匹配,这是你正在寻找的。尝试
if Report.Cells(j, 10) = Report.Cells(i, 9) etc.