爱疯,你的选区还是太大啦,Excel罢工了[em01],用临时数组存放筛选出来的数据吧[em01] 让我做的话,两个办法 一,用高级筛选代码 这个只要用4个辅助单元格就行,可以录制宏完成,简单方便,适合初学VBA者。 在O1和P1分别都输入“建链时间”;在O2和P2分别输入“>20091017000000”和“<20091018000000” 然后录制宏后修改一下代码,就得出以下代码了(很简单哦[em01]):
Sub bb() Dim r As Long
r = Range("F1").End(xlDown).Row Range("A1:M" & r).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ Range("O1:P2"), CopyToRange:=Range("R1"), Unique:=False
Range("R1:AD" & r).Cut Destination:=Range("A1:M" & r) End Sub 二,用条件循环筛选代码 这个不需要辅助单元格,利用数组,速度也很快,适合不想要辅助单元格的VBA入门者(以下代码是对爱疯代码的修正)。
Sub aa() Dim arr, arr2() Dim k As Long Dim i As Long Dim j As Long Dim r As Long Dim T As Double Dim Y As Double
Y = 20091017000000# T = 20091018000000# r = Range("F1").End(xlDown).Row
ReDim arr2(1 To r - 1, 1 To 13) arr = Range("A2:M" & r) For i = 1 To UBound(arr) If arr(i, 6) > Y And arr(i, 6) < T Then k = k + 1 For j = 1 To 13 arr2(k, j) = arr(i, j) Next j End If Next i
Range("A2:M" & r) = arr2
End Sub
[此贴子已经被作者于2009-10-18 16:04:34编辑过] |