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