Матрица 4x4. Нужно найти максимальный элемент, и, если можно, поменять его с первым элементом.
Макрос работает с активным excel-листом.
Макрос
Sub p1()
' Создание в оперативной памятик компьютера поименованной области - массива dblMatrix.
' Двумерный массив называется матрица. Двумерный массив, это когда массив
' можно мысленно сравнить с обычной таблицей, у которой есть строки и столбцы.
' Double - означает, что в матрице могут быть только числа. Числа могут быть целые и дробные.
' Первые 1 to 4 означают, что в матрице будет четыре строки.
' Вторые 1 to 4 означают, что в матрице будет четыре столбца.
Dim dblMatrix(1 To 4, 1 To 4) As Double
' Создание в оперативной памяти компьютера поименованной области - переменной dblMaxValue.
' Переменные используются, чтобы помещать в них какие-нибудь данные.
' Long означает, что в переменной могут быть только целые числа (дробные не могут).
Dim dblMaxValue As Double, lngMaxI As Long, lngMaxJ As Long
Dim dblTemporary As Double
Dim i As Long, j As Long
'1. Заполнение матрицы числами, чтобы было чего анализировать.
' Числа берутся из Excel, из активного листа.
' For ... To ... Step - называется циклом. Цикл используется, чтобы делать
' одну и ту же команду несколько раз.
For i = 1 To 4 Step 1
For j = 1 To 4 Step 1
dblMatrix(i, j) = Cells(i, j).Value
Next j
Next i
'2. Поиск в матрице максимального числа.
' Сначала за максимальное числ принимается первое число и затем
' все остальные числа сравниваются с этим числом. Если какое-то число
' окажется больше, то это новое число запоминается и затем уже
' с ним сравниваются остальные числа. И т.д.
dblMaxValue = dblMatrix(1, 1)
' Запись номера строки и номера столбца.
' Эти переменные нужны, чтобы потом поменять местами первый элемент и максимальный элемент.
lngMaxI = 1
lngMaxJ = 1
For i = 1 To 4 Step 1
For j = 1 To 4 Step 1
' If ... Then ... End If - используется для выбора действия.
' Если число в матрице больше числа в переменной.
If dblMatrix(i, j) > dblMaxValue Then
' Запись в переменные новых данных.
dblMaxValue = dblMatrix(i, j)
lngMaxI = i
lngMaxJ = j
End If
Next j
Next i
'3. Смена местами первого и максимального элементов.
' Чтобы это сделать нужна ещё одна переменная, в которую поместятся данные.
' Иначе при обмене данных в одном из элементов данные будут стёрты.
' Запись максимального числа в переменную dblTemporary.
dblTemporary = dblMatrix(lngMaxI, lngMaxJ)
' Помещение данных из первого элемента в максимальный.
dblMatrix(lngMaxI, lngMaxJ) = dblMatrix(1, 1)
' Помещение данных из переменной в первый элемент.
dblMatrix(1, 1) = dblTemporary
'4. Вывод результата в Excel, справа от исходной матрицы.
For i = 1 To 4 Step 1
For j = 1 To 4 Step 1
' + 5 - чтобы данные смещались вправо.
Cells(i, j + 5).Value = dblMatrix(i, j)
Next j
Next i
End Sub