Я чувствую, что вы, возможно, захотите вместо того, чтобы вернуть отсортированный массив , и только затем приведите результаты к Range
Сначала мы создадимFunction
для сортировки нашего массива
Private Function BubbleSort(ByRef from() As Variant) As Variant()
Dim i As Integer, j As Integer
Dim temp As Variant
For i = LBound(from) To UBound(from) - 1
For j = i + 1 To UBound(from)
If from(i) < from(j) Then
temp = from(j)
from(j) = from(i)
from(i) = temp
End If
Next j
Next i
BubbleSort = from ' returns sorted array
End Function
Затем мы создаем простую процедуру "Range
replacer"
Private Sub replace_with_sorted(ByVal which As Range)
Dim arr() As Variant
arr = Application.Transpose(which)
arr = BubbleSort(arr)
which = Application.Transpose(arr)
End Sub
Таким образом, вызов будет выглядеть следующим образом:
Private Sub test()
replace_with_sorted Range("A1:A4")
End Sub
Это, конечно, дает ожидаемый результат:
EDIT : только что заметил, что вы хотите отсортировать только значения больше 60. В этом случае просто заполните массив значениями больше 60 и используйте то же приложение.
Private Sub test()
Dim arr() as Variant: arr = Application.Transpose(Range("A1:A4"))
Dim above60() as Variant
Dim i as Integer, j as Integer: j = 0
For i = LBound(arr) To UBound(arr)
If arr(i) > 60 Then
ReDim Preserve above60(j)
above60(j) = arr(i)
j = j + 1
End If
Next i
ReDim arr()
arr = BubbleSort(above60)
' returns sorted array, do whatever u want with it _
(place it in whatever range u want, not defined in ur question)
End Sub