以下是引用搁浅2008在2009-11-6 15:15:00的发言: Sub test() Dim arr1 Dim arr2() Dim i As Long Dim j As Long Dim n As Long n = 1 arr1 = Sheet1.Range("A1:H12").Value For i = 1 To UBound(arr1, 1) If Sheet1.Cells(i, 1).Interior.ColorIndex = 6 Then ReDim Preserve arr2(1 To UBound(arr1, 2), 1 To n) For j = 1 To UBound(arr1, 2) arr2(j, n) = arr1(i, j) Next j n = n + 1 End If Next i Sheet1.Range("J1").Resize(n - 1, UBound(arr1, 2)) = Application.Transpose(arr2)
End Sub
刚开会去了,想了一下,实在没有捷径,还是老老实实的用循环. 我想到两种方式,一种是每次循环都像你这样n=n+1来Redim Preserve一次, 另一种是直接定义和原来一样容量的,最后赋值完毕后再循环一次找到临界点后只一次Redim Preserve. 安贤的就是第二种思路,不过后面没有处理上界问题.我再看看先. 不过如果能不用循环的最好了,嘿嘿,暂时不设最佳,等过两天真没有不用循环的方式我再设置了 [em04] |