По -долу ще разгледаме програма в Excel VBA че сортира числа.
Ситуация:
Поставете команден бутон на работния си лист и добавете следните кодови редове:
1. Първо, декларираме три променливи от тип Integer и един Range обект.
Dim i As Integer, j As Integer, temp As Integer, rng As Range
2. Инициализираме Range обекта rng с числата в колона А. Използваме свойството CurrentRegion за това. CurrentRegion е полезен, когато не знаем предварително точните граници на диапазон (искаме тази програма да работи за 9 числа, но и за 90 числа).
Задайте rng = Обхват ("A1"). CurrentRegion
3. Започваме два цикъла For Next.
За i = 1 За rng.Count
За j = i + 1 За rng.Count
Обяснение: rng.Count е равно на 9, така че първите две кодови редове се свеждат до For i = 1 до 9 и For j = i + 1 до 9. За i = 1, j = 2, 3,…, 8 и 9 се проверяват .
4. За да сортираме правилно числата, сравняваме първото число със следващото. Ако следващото число е по -малко, разместваме числата. Добавете следния израз If If.
Ако 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. Разменяме числата. Временно съхраняваме един номер за временно, за да може Excel VBA да размени правилно номерата. Добавете следните кодови редове в израза If.
'размяна на номера
temp = rng. Клетки (i)
rng.Cells (i) = rng.Cells (j)
rng.Клетки (j) = temp
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).
Следва i
8. Тествайте програмата си.
Резултат: