|
Sub Macro1() '为了加快速度,没有采用删除行的办法,只是覆盖原来的数据
Dim arr, d As Object, i&, j&, m&
Set d = CreateObject("scripting.dictionary")
arr = Sheets("Sheet1").Range("A1").CurrentRegion
For i = 1 To UBound(arr)
d(arr(i, 1)) = ""
Next
arr = Range("A1").CurrentRegion
For i = 1 To UBound(arr)
If d.exists(arr(i, 1)) Then
m = m + 1
For j = 1 To UBound(arr, 2)
arr(m, j) = arr(i, j)
Next
End If
Next
Range("A1").CurrentRegion.Clear
Range("A1").Resize(m, j-1) = arr'请问,为何这里是J-1,而不是J,百思不得其解?
End Sub
有附件,谢谢
因为j是循环变量,循环结束后,j的值刚好比循环次数多了1次。所以为表达循环次数就需表示成j-1
这里,Resize(m, j-1)和Resize(ubound(arr),ubound(arr,2))等效。
前者,看着简单。
后者,好理解。
|
|