所以我正在尝试删除列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到注释掉的即时窗口,它给了我正确的范围值,所以我不认为问题是在那,但我找不到什么错误...任何帮助非常感谢。
答案 0 :(得分:3)
一般情况下,将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
,这样就可以了。
答案 1 :(得分:1)
我认为你的范围语法无效。 请尝试以下
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