Сортировка чисел в Excel VBA - макросы Easy Excel

Содержание

Ниже мы рассмотрим программу на 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. Протестируйте свою программу.

Результат:

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave