• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

VBA Excel删除重复行

excel 来源:SBozhko 8次浏览

所以我试图删除C列中有重复的行。这是大约700条记录的列,但是这个值随使用的不同数据而异,因此我实现了一个“LastRow”功能。这里是我的代码:VBA Excel删除重复行

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,它会起作用。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)