Ниже мы рассмотрим программу на Excel VBA тот сортирует числа.
Ситуация:
Поместите командную кнопку на свой рабочий лист и добавьте следующие строки кода:
1. Сначала мы объявляем три переменные типа Integer и один объект Range.
Dim i как целое число, j как целое число, temp как целое число, rng как диапазон
2. Мы инициализируем rng объекта Range числами в столбце A. Мы используем для этого свойство CurrentRegion. CurrentRegion полезен, когда мы заранее не знаем точных границ диапазона (мы хотим, чтобы эта программа работала для 9 чисел, но также и для 90 чисел).
Установите rng = Range ("A1"). CurrentRegion
3. Запускаем два цикла For Next.
Для i = 1 To rng.Count
Для j = i + 1 To rng.Count
Объяснение: rng.Count равно 9, поэтому первые две строки кода уменьшаются с For i = 1 до 9 и For j = i + 1 до 9. Для i = 1 проверяются j = 2, 3,…, 8 и 9. .
4. Чтобы правильно отсортировать числа, мы сравниваем первое число со следующим числом. Если следующее число меньше, мы меняем местами числа. Добавьте следующий оператор If Then.
Если rng.Cells (j) <rng.Cells (i), то
Конец, если
Если приведенное выше утверждение верно, мы меняем местами числа.
Например: для i = 1 и j = 2 сравниваются числа 2 и 10. Вышеприведенное утверждение не соответствует действительности. Таким образом, нет необходимости менять номера местами. Excel VBA увеличивает j на 1 и повторяет строки кода для i = 1 и j = 3. Вы легко можете видеть, что 5 больше 2, поэтому менять числа местами по-прежнему нет необходимости. Мы получаем тот же результат для j = 4, j = 5 и j = 6. Когда мы приходим к j = 7, вышеупомянутое утверждение верно, поскольку 1 меньше 2.
5. Меняем местами номера. Мы временно сохраняем одно число в temp, чтобы Excel VBA мог правильно менять местами числа. Добавьте следующие строки кода в оператор If.
'поменять номера
temp = rng.Cells (i)
rng.Cells (i) = rng.Cells (j)
rng.Cells (j) = темп
6. Закрываем второй цикл For Next (вне оператора If).
Следующий j
Для i = 1 и j = 7 Excel VBA поменял местами числа. Это означает, что мы получаем 1 в первой позиции и 2 в позиции 7. Теперь, когда у нас есть 1 в первой позиции, мы сравним это значение с 5 (для j = 8) и 4 (для j = 9). Менять местами числа не нужно (1 - наименьшее число). Таким образом, Excel VBA получает (для i = 1) наименьшее число в первой позиции. Чтобы получить второе наименьшее число во второй позиции, Excel VBA повторяет те же шаги для i = 2. Чтобы получить третье наименьшее число в третьей позиции, Excel VBA повторяет те же самые шаги для i = 3 и т. Д.
7. Закройте первый цикл For Next (вне оператора If).
Далее я
8. Протестируйте свою программу.
Результат: