Excel获取运行时错误13:types不匹配

得到这个错误:

Sub Namecheck() Dim FirstName As Range, LastName As Range, fnamex As Range Dim LNCount As Double Dim lname As Variant, fname As Variant, lname2 As Variant Dim i As Integer, p1 As Integer i = 1 Set FirstName = ThisWorkbook.Sheets(Sheet1).Range("B2:B47175") Set LastName = ThisWorkbook.Sheets(Sheet1).Range("C2:C47175") For Each lname In LastName i = 1 + i LNCount = Application.WorksheetFunction.CountIf(LastName, lname) If LNCount > 2 Then p1 = 1 fname = cell.Offset(0, -1).Value Set fnamex = FirstName.Find(what:=fname, Lookat:=xlWhole) If Not fnamex Is Nothing Then ActiveCell.Cells = fnamex.Address lname2 = cell.Offset(0, 1).Value If lname2 = lname Then ActiveCell.Interior.ColorIndex = 36 End If End If End If Next End Sub 

有任何想法吗?

非VBA解决scheme。

使用条件格式 :

步骤1:

select整个列B:C (如果您只想对一列进行着色,则只select它,例如selectB列仅高亮显示名字)。 使用选定列转到条件格式 – >新规则。

在这里输入图像说明

第2步:

select使用公式检测要格式化的单元格 ,inputformula =COUNTIFs($B:$B,$B1,$C:$C,$C1)>1并select所需的格式。 按OK。

在这里输入图像说明

结果:

在这里输入图像说明


VBA解决scheme

 Sub Namecheck() Dim lastrow As Long Dim rng As Range Dim lname As Range With ThisWorkbook.Sheets("Sheet1") lastrow = .Cells(.Rows.Count, "B").End(xlUp).Row Set rng = .Range("B2:C" & lastrow) End With For Each lname In rng.Columns(2).Cells If Application.CountIfs(rng.Columns(2), lname, rng.Columns(1), lname.Offset(, -1)) > 1 Then lname.Interior.ColorIndex = 36 'change color of lastname lname.Offset(, -1).Interior.ColorIndex = 36 'change color of firstname End If Next End Sub