По -долу ще разгледаме програма в Excel VBA че произволно сортира данни (в този пример произволно сортира имена).
Ситуация:
1. Първо, декларираме четири променливи. Една променлива от тип String, която наричаме TempString, една променлива от тип Integer, която наричаме TempInteger, една променлива от тип Integer, която наричаме i, и една променлива от тип Integer, която наричаме j.
Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer
2. Записваме 5 случайни числа в колона В (по едно за всяко име). За това използваме функцията на работния лист RandBetween.
За i = 1 до 5
Клетки (i, 2) .Value = Работен лист Функция.RandBetween (0, 1000)
Следва i
Резултат до момента:
Ще използваме числата до всяко име, за да сортираме имената. Името с най -ниското число първо, името с второто най -ниско число, второ и т.н.
3. Стартираме Double Loop.
За i = 1 до 5
За j = i + 1 до 5
4. Добавете следния код:
Ако Cells (j, 2) .Value <Cells (i, 2) .Value Тогава
Пример: за i = 1 и j = 2 се сравняват Уенди и Ричард. Тъй като Ричард има по -малък брой, разменихме Уенди и Ричард. Сега Ричард е на първа позиция. За i = 1 и j = 3 се сравняват Ричард и Джост. Joost има по -голям номер, така че нищо не се случва. По този начин Excel VBA получава името с най -малкото число на първата позиция. За i = 2 Excel VBA получава името с второто най -ниско число на втората позиция и т.н.
5. Ако е вярно, сменяме имената.
tempString = Клетки (i, 1)
Клетки (i, 1). Стойност = Клетки (j, 1)
Клетки (j, 1) .Value = tempString
6. И разместваме числата.
tempInteger = Клетки (i, 2)
Клетки (i, 2). Стойност = Клетки (j, 2)
Клетки (j, 2). Значение = tempInteger
7. Не забравяйте да затворите оператора If.
Край Ако
8. Не забравяйте да затворите двата контура.
Следващ j
Следва i
9. Тествайте програмата.
Резултат:
Забележка: можете да добавите ред, който изтрива числата в колона В. Още по -хубаво е да поставите номерата на всяко име в масив, така че в работния ви лист да не се поставят числа. За илюстративна цел обаче сме избрали да поставим стойностите на листа.