Excel VBA как сортировать двумерный массив полностью?

Узнай цену своей работы

Формулировка задачи:

Есть массив NxM, видел сортировку по столбцу и т.д., интересен вариант сортировки полностью к примеру матрица 55 78 22 33 22 43 13 54 32 а на выходе 13 22 22 32 33 43 54 55 78
Листинг программы
  1. Sub Massiv()
  2. Dim mass() As Integer, i As Integer, j As Integer, N As Integer, M As Integer, u As Integer, k As Integer
  3. N = InputBox("Кол-во строк")
  4. M = InputBox("Кол-во столбцов")
  5. ReDim mass(1 To N, 1 To M) As Integer
  6. Randomize
  7. For i = 1 To N
  8. For j = 1 To M
  9. mass(i, j) = 100 * Rnd + (-50)
  10. Cells(1, 1) = "Исходный массив"
  11. Cells(i + 1, j) = mass(i, j)
  12. Next j
  13. Next i
  14. End Sub

Решение задачи: «Excel VBA как сортировать двумерный массив полностью?»

textual
Листинг программы
  1. Sub Massiv()
  2. 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
  3. N = InputBox("Кол-во строк", , 3)
  4. M = InputBox("Кол-во столбцов", , 3)
  5. ReDim A(N - 1, M - 1) As Integer
  6. Randomize
  7. Cells(1, 1) = "Исходный массив"
  8. For i = 1 To N
  9.   For j = 1 To M
  10.     A(i - 1, j - 1) = 100 * Rnd - 50
  11.   Next j
  12. Next i
  13.  
  14. Range(Cells(2, 1), Cells(1 + N, M)) = A
  15.  
  16. Cells(N + 3, 1) = "Отсортированный массив"
  17. For i = 0 To M * N - 2
  18.   For j = i + 1 To M * N - 1
  19.     If A(i \ M, i Mod M) > A(j \ M, j Mod M) Then
  20.       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
  21.     End If
  22.   Next j
  23. Next i
  24.  
  25. Range(Cells(N + 4, 1), Cells(3 + N + N, M)) = A
  26.  
  27. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы