End Sub
Результат выполнения программы:
Пример 13. Дана матрица А(n, m). Отсортировать каждый столбец в порядке убывания.
Sub primer_13()
Dim a() As Integer
Dim n As Integer, m As Integer, i As Integer
Dim j As Integer,prom As Integer, k As Integer
n = Cells(1, 4)
m = Cells(2, 4)
ReDim a(n, m)
'очистка рабочего листа от посторонних надписей
For i = 1 To 10 * n
For j = 1 To 10 * m
Cells(i + 2, j) = ""
Next j
Next i
'заполнение массива случайными целыми числами
'вывод массива в рабочий лист Excel
Cells(4, 1) = "Исходный массив:"
For i = 1 To n
For j = 1 To m
a(i, j) = 50 - Int(Rnd() * 100)
Cells(i + 4, j) = a(i, j)
Next j
Next i
' сортировка двумерного массива по столбцам
For j = 1 To m
'сортировка столбцов массива
For k = n - 1 To 1 Step -1
For i = 1 To k
If a(i, j) < a(i + 1, j) Then
'перестановка соседних элементов массива
prom = a(i, j)
a(i, j) = a(i + 1, j)
a(i + 1, j) = prom
End If
Next i
Next k
Next j
'вывод на печать массива с отсортированными строками
Cells(n + 6, 1) = "Преобразованный массив:"
For i = 1 To n
For j = 1 To m
Cells(i + n + 6, j) = a(i, j)
Next j
Next i