根据dynamic数量的列删除重复的行

我得到了列的总数,并试图将它追加到string,这是1,2,3,4,5取决于列的数量。

Sub DeleteHighlightedRecords() numofCol = "" For i = 1 To lcol numofCol = numofCol & "," & i Next i numofCol = Mid(numofCol, 2) ThisWorkbook.Worksheets(1).Cells.RemoveDuplicates Columns:=Array(numofCol), Header:=xlNo End Sub 

上面的代码,我将匹配组合我放在arrays(),然后删除重复亚? 纠正我,如果我错了,但是我得到应用程序定义的错误。

我如何设置列的dynamic数组()?

Array(1,2,3)Array("1,2,3") 。 第一个将产生一个包含1,2和3的3元素数组,第二个将产生一个包含string"1,2,3"的1元素数组。

要创build一个实际的数组,我们可以执行以下操作:

  Dim numOfCol() As Variant 'normally I would choose Long instead of variant but that gave a type mismatch error Dim i As Long 'always use "Option Explicit" at the top of your module! ReDim numOfCol(0 To (lcol - 1)) 'has to be 0-based for RemoveDuplicates For i = 0 To (lcol - 1) numOfCol(i) = i + 1 Next i 

现在好像使用一个Variant数组而不是一个Long数组并且使用一个基于0的数组是不够的, RemoveDuplicates显然也不能处理作为variables的引用而不是一个值的参数。 要将variables作为值传递而不是引用,请将其包含在括号中。 这会导致variables被评估,然后传递给函数。

 ThisWorkbook.Worksheets(1).Cells.RemoveDuplicates Columns:=(numOfCol), Header:=xlNo