Excel VBA как сортировать двумерный массив полностью?
Формулировка задачи:
Есть массив NxM, видел сортировку по столбцу и т.д., интересен вариант сортировки полностью к примеру матрица
55 78 22
33 22 43
13 54 32
а на выходе
13 22 22
32 33 43
54 55 78
Листинг программы
- Sub Massiv()
- Dim mass() As Integer, i As Integer, j As Integer, N As Integer, M As Integer, u As Integer, k As Integer
- N = InputBox("Кол-во строк")
- M = InputBox("Кол-во столбцов")
- ReDim mass(1 To N, 1 To M) As Integer
- Randomize
- For i = 1 To N
- For j = 1 To M
- mass(i, j) = 100 * Rnd + (-50)
- Cells(1, 1) = "Исходный массив"
- Cells(i + 1, j) = mass(i, j)
- Next j
- Next i
- End Sub
Решение задачи: «Excel VBA как сортировать двумерный массив полностью?»
textual
Листинг программы
- Sub Massiv()
- Dim A() As Integer, i As Integer, j As Integer, N As Integer, M As Integer, t As Integer ', u As Integer, k As Integer
- N = InputBox("Кол-во строк", , 3)
- M = InputBox("Кол-во столбцов", , 3)
- ReDim A(N - 1, M - 1) As Integer
- Randomize
- Cells(1, 1) = "Исходный массив"
- For i = 1 To N
- For j = 1 To M
- A(i - 1, j - 1) = 100 * Rnd - 50
- Next j
- Next i
- Range(Cells(2, 1), Cells(1 + N, M)) = A
- Cells(N + 3, 1) = "Отсортированный массив"
- For i = 0 To M * N - 2
- For j = i + 1 To M * N - 1
- If A(i \ M, i Mod M) > A(j \ M, j Mod M) Then
- t = A(i \ M, i Mod M): A(i \ M, i Mod M) = A(j \ M, j Mod M): A(j \ M, j Mod M) = t
- End If
- Next j
- Next i
- Range(Cells(N + 4, 1), Cells(3 + N + N, M)) = A
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д