簡體   English   中英

Excel收到運行時錯誤13:類型不匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM