VBA Excel 删除重复的行

  • 本文关键字:Excel 删除 VBA vba excel
  • 更新时间 :
  • 英文 :


所以我正在尝试删除 C 列中有任何重复的行。这是一列大约 700 条记录,但此值因使用的不同数据而异,因此我实现了"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

分步调试时,我在以下行收到"应用程序定义或对象定义"错误:

.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中应至少有三列。但是您那里只有列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(.排

最新更新