Sortarea aleatorie a datelor în Excel VBA - Macro Excel ușor

Cuprins

Mai jos vom analiza un program în Excel VBA acea sortează aleatoriu datele (în acest exemplu sortează aleatoriu numele).

Situatie:

1. În primul rând, declarăm patru variabile. O variabilă de tip String o numim TempString, o variabilă de tip Integer o numim TempInteger, o variabilă de tip Integer o numim i și o variabilă de tip Integer o numim j.

Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer

2. Scriem 5 numere aleatorii în coloana B (unul pentru fiecare nume). Pentru aceasta folosim funcția de foaie de lucru RandBetween.

Pentru i = 1 până la 5
Celule (i, 2) .Value = WorksheetFunction.RandBetween (0, 1000)
Apoi eu

Rezultatul de până acum:

Vom folosi numerele de lângă fiecare nume pentru a sorta numele. Numele cu cel mai mic număr primul, numele cu al doilea număr cel mai mic, al doilea etc.

3. Începem un Double Loop.

Pentru i = 1 până la 5
Pentru j = i + 1 până la 5

4. Adăugați următoarea linie de cod:

Dacă celule (j, 2). Valoare <Celule (i, 2). Valoare Apoi

Exemplu: pentru i = 1 și j = 2, se compară Wendy și Richard. Deoarece Richard are un număr mai mic, îi schimbăm pe Wendy și Richard. Richard se află acum pe prima poziție. Pentru i = 1 și j = 3, se compară Richard și Joost. Joost are un număr mai mare, așa că nu se întâmplă nimic. În acest fel, Excel VBA primește numele cu cel mai mic număr în prima poziție. Pentru i = 2, Excel VBA primește numele cu al doilea număr cel mai mic la a doua poziție etc.

5. Dacă este adevărat, schimbăm numele.

tempString = Celule (i, 1). Valoare
Celule (i, 1). Valoare = Celule (j, 1). Valoare
Celule (j, 1) .Value = tempString

6. Și schimbăm numerele.

tempInteger = Celule (i, 2). Valoare
Celule (i, 2). Valoare = Celule (j, 2). Valoare
Celule (j, 2) .Value = tempInteger

7. Nu uitați să închideți declarația If.

End If

8. Nu uitați să închideți cele două bucle.

 Următorul j
Apoi eu

9. Testați programul.

Rezultat:

Notă: puteți adăuga o linie care șterge numerele din coloana B. Este chiar mai plăcut să plasați numerele fiecărui nume într-o matrice, deci nu sunt plasate numere pe foaia de lucru. Cu toate acestea, în scop ilustrativ, am ales să plasăm valorile pe foaie.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave