В этом руководстве будет показано, как сортировать значения в массиве в VBA.
Сортировка одномерного массива с помощью цикла
Сортировка массива требует некоторой обработки данных с использованием циклов, переменных и временных массивов.
- Сначала вам нужно заполнить массив своими значениями
- Затем вам нужно дважды перебрать массив! Один раз, чтобы получить значение из текущего массива элементов, и пока все еще в этом цикле, чтобы получить значение следующего элемента в массиве.
- Затем вам нужно сравнить элементы - и переместить 2-й в положение первого, если 2-й находится по алфавиту ПЕРЕД 1-м.
Пример ниже демонстрирует эту процедуру.
1234567891011121314151617181920212223 | Sub SortAnArray ()Тусклый я до тех пор, пока'Установить массивDim strName () как вариантDim Temp как вариант'заполнить массивstrName () = Array («Боб Смит», «Джон Дэвис», «Фред Джонс», «Стив Дженкинс», «Боб Уильямс»)'пройти через границу арри и получить имяДля i = LBound (strName) To UBound (strName) - 1'пропустите снова и проверьте, находится ли следующее имя в алфавитном порядке до или после оригинальногоДля j = i + 1 To UBound (strName)Если UCase (strName (i))> UCase (strName (j)), то'если имя нужно переместить перед предыдущим именем, добавить во временный массивTemp = strName (j)поменять именаstrName (j) = strName (i)strName (i) = ТемператураКонец, еслиСледующий jДалее я'Выводить массив через окно сообщенияПрисоединение к MsgBox (strName (), vbCrLf)Конец подписки |
Если вы запустите эту процедуру, вы получите следующее окно сообщения.
Вы также можете отсортировать массив в другом направлении - например: от Z до A, изменив эту строку кода
1 | Если UCase (strName (i))> UCase (strName (j)) Тогда |
к этой строке кода
1 | Если UCase (strName (i)) <UCase (strName (j)) Тогда |
После этого вы получите следующее окно сообщения.