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