因此,我尝试删除 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
即可正常工作。
关于VBA Excel 删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44966186/