Существует также двунаправленный вариант сортировки методом выбора, в котором на каждом проходе отыскиваются и устанавливаются на свои места и минимальное, и максимальное значения.
==Реализация на VBA==
<syntaxhighlight lang="vb">
Sub VSort()
For i = 1 To 10 Step 1
For j = i + 1 To 10 Step 1
If ActiveSheet.Cells(i, 1) > ActiveSheet.Cells(j, 1) Then
ActiveSheet.Cells(i, 1) = ActiveSheet.Cells(i, 1) + ActiveSheet.Cells(j, 1)
ActiveSheet.Cells(j, 1) = ActiveSheet.Cells(i, 1) - ActiveSheet.Cells(j, 1)
ActiveSheet.Cells(i, 1) = ActiveSheet.Cells(i, 1) - ActiveSheet.Cells(j, 1)
End If
Next j
Next i
End Sub
</syntaxhighlight>
<syntaxhighlight lang="vb">
' С использованием переменной c.
Sub VSort()
For i = 1 To 10 Step 1
For j = i + 1 To 10 Step 1
If ActiveSheet.Cells(i, 1) > ActiveSheet.Cells(j, 1) Then
с = ActiveSheet.Cells(i, 1)
ActiveSheet.Cells(i, 1) = ActiveSheet.Cells(j, 1)
ActiveSheet.Cells(j, 1) = c
End If
Next j
Next i
End Sub
</syntaxhighlight>
Здесь сортируются ячейки напрямую. ActiveSheet.Cells(i, 1) - обращение к ячейке с (1, i). Обратите внимание, что координаты ячеек в VBA задаются как (y, x) - номер колонки и номер ряда, в котором расположена ячейка. Также помните, что ячейки индексируются с 1.
== Литература ==
|