Születésnapok rendezése az Excel VBA programban - Egyszerű Excel makrók

Tartalomjegyzék

Az alábbiakban megnézzük a programot Excel VBA hogy születésnapokat rendez első hónapokig és második napokig (tehát figyelmen kívül hagyjuk az éveket). Azt akarjuk, hogy a születésnap a legalacsonyabb havi számmal legyen az első helyen. Ha vannak születésnapok azonos hónapszámmal, akkor először a legalacsonyabb napszámmal rendelkező születésnapot szeretnénk. Kész vagy?

Helyzet:

Megjegyzés: A dátumok amerikai formátumban vannak megadva. Első hónap, második nap. Ez a formátum a Windows regionális beállításaitól függ.

1. Először nyolc változót deklarálunk. Egy dátum változót tempDate, egy karakterlánc változót pedig tempName. A másik hat változó egész változó, amelyek neve: monthToCheck, dayToCheck, monthNext, dayNext, i és j.

Dim tempDate as Date, tempName as String
Dim monthToCheck As Integer, dayToCheck As Integer, monthNext As Integer, dayNext As Integer, i As Integer, j As Integer

2. Két For Next hurkot kezdünk.

I = 2 és 13 között
J = i + 1 és 13 között

Példa: ha i = 2, akkor j = 3, 4,…, 12 és 13 van bejelölve.

3. Négy egész változót inicializálunk. A Hónap függvénnyel a dátum hónapját, a Nap funkcióval pedig a dátum napját kapjuk.

monthToCheck = hónap (cellák (i, 2). Érték)
dayToCheck = nap (cellák (i, 2). Érték)
monthNext = hónap (cellák (j, 2). Érték)
dayNext = nap (cellák (j, 2). Érték)

Például: az elején, ha i = 2; Bregje dátuma, és j = i + 1 = 2 + 1 = 3; Niels dátumát választják.

4. A dátumok megfelelő rendezéséhez összehasonlítjuk az első dátumot (monthToCheck és dayToCheck) a következő dátummal (monthNext és dayNext). Ha a következő dátum "alacsonyabb", felcseréljük a dátumokat és a neveket. Adja hozzá a következő If then utasítást.

Ha (monthNext <monthToCheck) Vagy (monthNext = monthToCheck And dayNext <dayToCheck) Akkor
Vége Ha

Ha a fenti állítás igaz, felcseréljük a dátumokat és a neveket.

Például: i = 2 és j = 3 esetén Bregje és Niels dátumát ellenőrzik. MonthNext = 6, monthToCheck = 2. A fenti állítás nem igaz, mivel a monthNext magasabb, mint a monthToCheck. Az Excel VBA 1 -gyel növeli a j értéket, és megismétli az i = 2 és j = 4 kódsorokat. Könnyedén láthatja, hogy Joost (j = 4) magasabb hónapszámmal rendelkezik, mint Bregje, ezért továbblépünk a következőre. Ugyanazt az eredményt kapjuk j = 5 és j = 6 esetén. Amikor j = 7 -re érkezünk, a következő változók állnak rendelkezésünkre: monthNext = 2 és dayNext = 9. MonthToCheck = 2 és dayToCheck = 12. Most a fenti állítás igaz mivel monthNext = monthToCheck és dayNext (9) kisebb, mint dayToCheck (12).

5. Felcseréljük a dátumokat. Egy dátumot ideiglenesen tárolunk a tempDate -ben, hogy az Excel VBA megfelelően felcserélhesse a dátumokat. Adja hozzá a következő kódsorokat az If utasításhoz.

'dátumot cserélni
tempDate = Cella (i, 2). Érték
Cella (i, 2). Érték = Cella (j, 2). Érték
Cella (j, 2). Érték = tempDate

6. Ugyanezt tesszük a nevekkel is. Adja hozzá a következő kódsorokat az If utasításhoz.

'neveket cserélni
tempName = Cellak (i, 1). Érték
Cella (i, 1). Érték = Cella (j, 1). Érték
Cellak (j, 1). Érték = tempName

7. Bezárjuk a második For Next cikket (az If utasításon kívül).

Következő j

I = 2 és j = 7 esetén az Excel VBA felcserélte a dátumokat és a neveket. Ez azt jelenti, hogy Richardot az első, Bregje -t pedig a 7. pozícióban kapjuk. Ez azt is jelenti, hogy a következő iterációnk elején új hónapToCheck és dayToCheck kapunk (i = 2 és j = 8 esetén). Most összehasonlítjuk Richardot Dineke -vel (j = 8). Könnyen beláthatja, hogy nincs szükség a dátumok és nevek cseréjére, mert Richardnak van egy „alacsonyabb” dátuma. Valójában nem szükséges Richard (i = 2) helyett Jan (j = 9), Wendy (j = 10), Jeroen (j = 11), John (j = 12) és Debby (j) = 13). Ennek az az oka, hogy Richardnak van a „legalacsonyabb” dátuma. Így az Excel VBA megkapja (i = 2 esetén) a "legalacsonyabb" dátumot az első pozícióban. A második "legalacsonyabb" dátum megszerzéséhez a második pozícióban az Excel VBA pontosan ugyanazokat a lépéseket ismételje meg az i = 3 esetén. A harmadik "legalacsonyabb" dátum megszerzéséhez a harmadik pozícióban az Excel VBA pontosan ugyanazokat a lépéseket ismétli meg i = 4 esetén, stb.

8. Zárja be az első For Next cikket (az If utasításon kívül).

Következő i

9. Tesztelje programját.

Eredmény:

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave