效率更高一点的做法,循环嵌套改成两个单循环,前提是B列没有负数,如果有的话需要对开头部分增加判断。
- Sub test()
- Dim arr, i&, tmp&
- arr = [f10].CurrentRegion.Offset(, -4).Resize(, 6)
- ReDim arr1(1 To UBound(arr), 0)
- For i = 1 To UBound(arr)
- If arr(i, 1) Then
- arr(i, 6) = (tmp >= arr(i, 1)) * 2 + 1
- tmp = arr(i, 1)
- End If
- Next i
- For i = 1 To UBound(arr)
- If arr(i, 6) Then tmp = arr(i, 6)
- If arr(i, 5) Then arr(i, 5) = tmp Else arr(i, 5) = ""
- Next i
- [g10].Resize(UBound(arr)) = Application.Index(arr, , 5)
- End Sub
复制代码 |