下面是表示给定机器的效率与日期的图片。效率不是每天都在进行,而是在随机日期进行。然后重复该效率直到增加新的效率。因此,在我们的案例中,在#1,3,10和#1日进行了独特的效率。 12.然而,您可以看到效率可能会重复,因此第3天和第3天12效率相同.. 我们不能使用命令Remove Dublicates
任务是选择那些在第1,3,10和1天进入效率的日期。 12,使用VBA我有点能够做到这一点,但它最终会抛出错误9?
Sub AutoEffRemove()
Dim rangeToUse As Range, cell1 As Range, i As Integer, RowCount As Integer, MyArray() As Variant
Set rangeToUse = Selection
For Each cell1 In Selection
If cell1.Value = cell1.Offset(-1, 0).Value Then
ReDim Preserve MyArray(RowCount)
MyArray(RowCount) = cell1.Row
RowCount = RowCount + 1
End If
Next cell1
For i = 0 To WorksheetFunction.Count(MyArray)
Rows(MyArray(i)).EntireRow.Delete
'MsgBox MyArray(i)
Next i
End Sub
MsgBox& Count(MyArray)确实表示代码定位所需的行
答案 0 :(得分:1)
导致错误是因为您的最终For循环应该从lbound(MyArray)到ubound(MyArray),或者从0到WorksheetFunction.Count(MyArray)-1。
此外,您的最终循环不会删除您希望删除的行。删除第一行后(示例中的第4行),所有其他单元格将向上移动一行,因此下一次删除(第6行)将实际删除最初的第7行。
所以你最好从ubound(MyArray)到lbound(MyArray)步骤-1执行最后一个循环。