VBA Excel删除重复的行

所以我试图删除C列中有重复的行。这是一个大约700条logging的列,但是这个值随使用的不同数据而变化,因此我实现了一个“LastRow”函数。 这是我的代码:

Public Function LastRowInCRC() As Long Dim wsCRC As Worksheet Set wsCRC = Worksheets("CRC") With wsCRC LastRowInCRC = .Cells(.Rows.Count, "C").End(xlUp).Row End With End Function Sub DeleteDupRowsCRC() Dim wsCRC As Worksheet Set wsCRC = Worksheets("CRC") Dim lrowcrc As Long lrowcrc = CRC.LastRowInCRC 'Debug.Print "C8:C" & lrowcrc With wsCRC .Range("C8:C" & lrowcrc).RemoveDuplicates Columns:=Array(3) End With End Sub 

当我一步一步debugging时,我在下面的行中得到“应用程序定义的或对象定义的”错误:

 .Range("C8:C" & lrowcrc).RemoveDuplicates Columns:=Array(3) 

任何想法最新怎么了? 我把“C8:C”和lrowcrc称为即时窗口,它给了我正确的范围值,所以我不认为这个问题是在这个问题,但我找不到什么错误…任何帮助很大赞赏。

一般来说,将Array(3)更改为Array(1) ,它可能会工作。


不是一般的:以下工作适用于我,删除列C的重复项确保您在第一个工作表上工作:

 Option Explicit Public Function LastRowInCRC() As Long Dim wsCRC As Worksheet Set wsCRC = Worksheets(1) With wsCRC LastRowInCRC = .Cells(.Rows.Count, "A").End(xlUp).Row End With End Function Sub DeleteDupRowsCRC() Dim wsCRC As Worksheet Set wsCRC = Worksheets(1) Dim lrowcrc As Long lrowcrc = LastRowInCRC 'Debug.Print "C8:C" & lrowcrc With wsCRC .Range("C1:C" & lrowcrc).RemoveDuplicates Columns:=Array(1) End With End Sub 

在您的代码中, Array(3)意味着您应该在.Range中至less有三列。 但是你只有C列。 因此,这是错误的。 要处理Array(3) ,写A1:C ,它将工作。

我认为你的范围无效的语法。 请尝试下面的内容

 With wsCRC .Range(Cells(8, 3), Cells(lrowcrc, 3)).Select .Range(Cells(8, 3), Cells(lrowcrc, 3)).RemoveDuplicates Columns:=1, Header:=xlYes End With 

旁边,我想你应该使用下面

lrowcrc = LastRowInCRC

或者使用此代码获取最后一行

wsCRC。[C8] .SpecialCells(xlCellTypeLastCell).Row