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