用于从整个工作表中删除重复项的功能

时间:2018-01-03 22:27:27

标签: excel-vba vba excel

我无法使用下面的功能。理想情况下,我想创建一个函数,它将自动识别工作表中已使用的列数,然后将其作为数组传递给删除重复项。我不明白为什么它不起作用。我可以确认这些工作表有标题和多行。当我尝试使用数组删除重复项时,我继续收到错误5。

        ReDim colary(1 To wbDestination.Sheets(1).Range("XX1").End(xlToLeft).Column)
        For i = 1 To UBound(colary)
            colary(i) = i
        Next i

        wbDestination.Sheets(1).Range("$A$1:" & wbDestination.Sheets(1).Range("A1").SpecialCells(xlCellTypeLastCell).Address).RemoveDuplicates Columns:=Evaluate(colary), Header:=xlYes

2 个答案:

答案 0 :(得分:1)

由于您想要创建一个函数,这里有一个方法

Sub RemoveDupes(ByVal entireRng As Range, ByVal col As Integer, Optional ByVal containsHeaders As Boolean = True)
    Dim retVal As Integer
    If containsHeaders = True Then
        retVal = xlYes
    Else
        retVal = xlNo
    End If
    entireRng.RemoveDuplicates Columns:=col, Header:=retVal
End Sub

例行公事并不仅仅是打字,而是按照你的意愿使用它。

如果要检查多个列,那么对于col变量,您可以传递数组。

答案 1 :(得分:0)

此功能从当前工作表中的所有列中删除重复项

Sub RemDupCol() 'remove duplicates from all columns
Dim rng As Range
Dim cols As Variant
Dim i As Integer

Set rng = [A1].CurrentRegion 'range bounded by any combination of blank rows and blank columns
ReDim cols(0 To rng.Columns.Count - 1) 'resize a dynamic array already declared
For i = 0 To UBound(cols) 'Loop for all columns
cols(i) = i + 1
Next i
rng.RemoveDuplicates Columns:=(cols), Header:=xlYes 'Removes duplicate values from a range of values.
'Array of indexes of the columns that contain the duplicate information. first row contains header information.
End Sub