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