|
本帖最后由 wcymiss 于 2011-12-21 21:00 编辑
吴姐辛苦了~~~~~~~{:1612:}
本以为方法1会快点,结果还是方法2快点。{:4712:}
方法1:
- Sub windimi007_1()
- Dim arr, arr1() As String
- Dim i&, r1&, r2&, r3&
- arr = Range("A1").CurrentRegion
- For i = 2 To UBound(arr)
- Select Case arr(i, 2)
- Case Is < 2000
- r1 = r1 + 1
- If r1 > r2 And r1 > r3 Then ReDim Preserve arr1(1 To 6, 1 To r1)
- arr1(1, r1) = arr(i, 1)
- arr1(2, r1) = arr(i, 2)
- Case Is < 3000
- r2 = r2 + 1
- If r2 > r1 And r2 > r3 Then ReDim Preserve arr1(1 To 6, 1 To r2)
- arr1(3, r2) = arr(i, 1)
- arr1(4, r2) = arr(i, 2)
- Case Else
- r3 = r3 + 1
- If r3 > r1 And r3 > r2 Then ReDim Preserve arr1(1 To 6, 1 To r3)
- arr1(5, r3) = arr(i, 1)
- arr1(6, r3) = arr(i, 2)
- End Select
- Next i
- Erase arr
- Range("D3").Resize(UBound(arr1, 2), 6) = WorksheetFunction.Transpose(arr1)
- Erase arr1
- End Sub
复制代码 方法2:
- Sub windimi007_2()
- Dim arr, arr1() As String, arr2() As String, arr3() As String
- Dim i&, r1&, r2&, r3&
- arr = Range("A1").CurrentRegion
- For i = 2 To UBound(arr)
- Select Case arr(i, 2)
- Case Is < 2000
- r1 = r1 + 1
- ReDim Preserve arr1(1 To 2, 1 To r1)
- arr1(1, r1) = arr(i, 1)
- arr1(2, r1) = arr(i, 2)
- Case Is < 3000
- r2 = r2 + 1
- ReDim Preserve arr2(1 To 2, 1 To r2)
- arr2(1, r2) = arr(i, 1)
- arr2(2, r2) = arr(i, 2)
- Case Else
- r3 = r3 + 1
- ReDim Preserve arr3(1 To 2, 1 To r3)
- arr3(1, r3) = arr(i, 1)
- arr3(2, r3) = arr(i, 2)
- End Select
- Next i
- Erase arr
- Range("D3").Resize(UBound(arr1, 2), 2) = WorksheetFunction.Transpose(arr1)
- Range("F3").Resize(UBound(arr2, 2), 2) = WorksheetFunction.Transpose(arr2)
- Range("H3").Resize(UBound(arr3, 2), 2) = WorksheetFunction.Transpose(arr3)
- Erase arr1
- Erase arr2
- Erase arr3
- End Sub
复制代码
代码一的判断稍多,只要直接对比r1、r2、r3与ubound(arr,2)就可以了。--------wcymiss
|
评分
-
查看全部评分
|