|
发表于 2016-6-18 18:08
|
显示全部楼层
本楼为最佳答案
- Sub 过滤()
- Dim n$, arr, brr, crr(), g&, z&, gt$, zt$, x&, n1&, d As Double
- With Sheet1
- n = .Cells(.Rows.Count, 1).End(xlUp).Row
- arr = .Range("A2:D" & n)
- End With
- brr = Sheet3.Range("A2:D2")
- z = Asc(brr(1, 1)) - 64
- zt = brr(1, 2)
- g = Asc(brr(1, 3)) - 64
- gt = brr(1, 4)
- ReDim Preserve crr(1 To 5, 1 To 1)
- x = 1
- For i = 1600 To n - 1
- If arr(i, g) = gt Then
- For j = 1 To 4
- crr(j, x) = arr(i, j)
- Next
- ElseIf arr(i, z) = zt Then
- x = x + 1
- ReDim Preserve crr(1 To 5, 1 To x)
- For j = 1 To 4
- crr(j, x) = arr(i, j)
- Next
- d = crr(1, x) - crr(1, x - 1)
- crr(5, x) = d
- x = x + 1
- ReDim Preserve crr(1 To 5, 1 To x)
- End If
- Next
- n1 = UBound(Application.Index(crr, 2))
- Sheet2.Range("A2:E" & n1) = Application.WorksheetFunction.Transpose(crr)
- End Sub
复制代码 |
|