/ / Сортирање бројева у Екцелу ВБА

Сортирање бројева у Екцелу ВБА

У наставку ћемо погледати програм Екцел ВБА то сорти бројева.

Ситуација:

Пример сортирања бројева

Поставите командно дугме на свој радни лист и додајте следеће линије кода:

1. Прво, објављујемо три варијабле типа Интегер и један објект Ранге.

Dim i As Integer, j As Integer, temp As Integer, rng As Range

2. Иницијализирамо објекат Ранге из рнг с бројевима у колони А. За то користимо својство ЦуррентРегион. ЦуррентРегион је корисно када унапред не познајемо тачне границе ранга (желимо да овај програм ради за 9 бројева, али и за 90 бројева).

Set rng = Range("A1").CurrentRegion

3. Покрећемо две Фор Нект петље.

For i = 1 To rng.Count
    For j = i + 1 To rng.Count

Објашњење: рнг.Цоунт је једнако 9, тако да се прва два кода линија своде на За и = 1 до 9 и За ј = и + 1 до 9. За и = 1, ј = 2, 3, ..., 8 и 9 се проверавају.

4. Да правилно сортирамо бројеве, упоређујемо први број са следећим бројем. Ако је следећи број мањи, ми размјењивамо бројеве. Додајте следећу изјаву Иф Тхен Тхен.

If rng.Cells(j) < rng.Cells(i) Then

End If

Ако је горња изјава тачна, ми замијенимо бројеве.

На пример: за и = 1 и ј = 2, бројеви 2 и 10 се упоређују. Горња изјава није тачна. Дакле, нема потребе за заменом бројева. Екцел ВБА увећава ј за 1 и понавља линије кода за и = 1 и ј = 3. Можете лако видети да је 5 већи од 2, тако да и даље нема потребе за заменом бројева. Добијамо исти резултат за ј = 4, ј = 5 и ј = 6. Када стигнемо на ј = 7, горња изјава је тачна јер је 1 мањи од 2.

5. Замењујемо бројеве. Привремено чувамо један број у темп, тако да Екцел ВБА може правилно изменити бројеве. Додајте следеће линијске кодове у изјави Иф.

"swap numbers
temp = rng.Cells(i)
rng.Cells(i) = rng.Cells(j)
rng.Cells(j) = temp

6. Затворимо другу за наредну петљу (изван изјаве "Ако").

Next j

За и = 1 и ј = 7, Екцел ВБА је замениобројеви. То значи да имамо 1 на првој позицији и 2 на позицији 7. Сада када имамо 1 на првој позицији, упоредићемо ову вриједност са 5 (за ј = 8) и 4 (за ј = 9). Нема потребе за заменом бројева (1 је најмањи број). На овај начин Екцел ВБА добија (за и = 1) најмањи број на првој позицији. Да бисте добили други најмањи број на другој позицији, Екцел ВБА понавља исте кораке за и = 2. Да бисте добили трећи најмањи број на трећем положају, Екцел ВБА понавља исте кораке за и = 3, итд.

7. Затворите прву петљу за наредну (изван наредбе Иф).

Next i

8. Тестирајте свој програм.

Резултат:

Сортирање бројева у Екцелу ВБА

Такође прочитајте: