[英]Excel getting a runtime error 13: Type mismatch
得到這個錯誤:
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解決方案。
使用條件格式 :
第1步:
選擇整個B:C
列(如果您只想給一列上色,則只選擇它,例如,選擇B
列僅突出顯示名字)。 選擇列后,轉到條件格式->新規則。
第2步:
選擇使用公式來檢測要格式化的單元格 ,輸入公式=COUNTIFs($B:$B,$B1,$C:$C,$C1)>1
並選擇所需的格式。 按確定。
結果:
VBA解決方案
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.