Kārtojiet dzimšanas dienas programmā Excel VBA - vienkārši Excel makro

Satura rādītājs

Zemāk mēs apskatīsim programmu Excel VBA ka kārto dzimšanas dienas līdz pirmajiem mēnešiem un otrajām dienām (tāpēc mēs ignorējam gadus). Mēs vēlamies dzimšanas dienu ar zemāko mēneša numuru pirmajā pozīcijā. Ja ir dzimšanas dienas ar vienādiem mēneša skaitļiem, mēs vispirms vēlamies dzimšanas dienu ar zemāko dienas numuru. Vai tu esi gatavs?

Situācija:

Piezīme: datumi ir ASV formātā. Mēneši pirmie, otrās dienas. Šis formāta veids ir atkarīgs no jūsu Windows reģionālajiem iestatījumiem.

1. Pirmkārt, mēs deklarējam astoņus mainīgos. Vienu datuma mainīgo mēs saucam par tempDate, vienu virknes mainīgo mēs saucam par tempName. Pārējie seši mainīgie ir veselu skaitļu mainīgie ar nosaukumiem monthToCheck, dayToCheck, monthNext, dayNext, i un j.

Dim tempDate kā datums, tempName kā virkne
Dim monthToCheck As Integer, dayToCheck As Integer, monthNext As Integer, dayNext As Integer, i As Integer, j As Integer

2. Mēs sākam divas For Next cilpas.

Ja i = 2 līdz 13
Ja j = i + 1 līdz 13

Piemērs: ja i = 2, tiek pārbaudīti j = 3, 4,…, 12 un 13.

3. Mēs inicializējam četrus veselus skaitļus. Mēs izmantojam funkciju Mēnesis, lai iegūtu datumu mēnesi, un funkciju Diena, lai iegūtu datuma dienu.

monthToCheck = mēnesis (šūnas (i, 2). Vērtība)
dayToCheck = diena (šūnas (i, 2). Vērtība)
monthNext = mēnesis (šūnas (j, 2). Vērtība)
dayNext = diena (šūnas (j, 2). Vērtība)

Piemēram: sākumā, ja i = 2; Bregje datums, un j = i + 1 = 2 + 1 = 3; tiks izvēlēts Nīla datums.

4. Lai pareizi sakārtotu datumus, mēs salīdzinām pirmo datumu (monthToCheck un dayToCheck) ar nākamo datumu (monthNext un dayNext). Ja nākamais datums ir “zemāks”, mēs mainām datumus un vārdus. Pievienojiet šādu paziņojumu Ja tad.

Ja (monthNext <monthToCheck) Vai (monthNext = monthToCheck And dayNext <dayToCheck) Tad
Beigas Ja

Ja iepriekš minētais apgalvojums ir patiess, mēs mainām datumus un vārdus.

Piemēram: ja i = 2 un j = 3, tiek pārbaudīts Bregje un Niels datums. MonthNext = 6, monthToCheck = 2. Iepriekš minētais apgalvojums nav patiess, jo monthNext ir augstāks par monthToCheck. Excel VBA palielina j par 1 un atkārto koda rindas i = 2 un j = 4. Jūs varat viegli redzēt, ka Joost (j = 4) ir lielāks mēneša skaitlis nekā Bregje, tāpēc mēs pārejam pie nākamā. Mēs iegūstam tādu pašu rezultātu attiecībā uz j = 5 un j = 6. Kad mēs sasniedzam j = 7, mums ir šādi mainīgie: monthNext = 2 un dayNext = 9. MonthToCheck = 2 un dayToCheck = 12. Tagad iepriekš minētais apgalvojums ir patiess kopš monthNext = monthToCheck un dayNext (9) ir zemāks par dayToCheck (12).

5. Mēs mainām datumus. Mēs īslaicīgi uzglabājam vienu datumu tempDate, lai Excel VBA varētu pareizi nomainīt datumus. Ja paziņojumā pievienojat šādas koda rindiņas.

'samainīt datumus
tempDate = Šūnas (i, 2). Vērtība
Šūnas (i, 2). Vērtība = šūnas (j, 2). Vērtība
Šūnas (j, 2). Vērtība = tempDate

6. Mēs darām to pašu ar nosaukumiem. Ja paziņojumā pievienojat šādas koda rindiņas.

'apmainīt vārdus
tempName = Šūnas (i, 1). Vērtība
Šūnas (i, 1). Vērtība = šūnas (j, 1). Vērtība
Šūnas (j, 1). Vērtība = tempName

7. Mēs aizveram otro cilni Par nākamo (ārpus paziņojuma Ja).

Nākamais j

Ja i = 2 un j = 7, Excel VBA apmainīja datumus un nosaukumus. Tas nozīmē, ka mēs iegūstam Ričardu pirmajā pozīcijā un Bregje 7. pozīcijā. Tas nozīmē arī to, ka nākamās iterācijas sākumā mēs saņemam jaunu mēnesiToCheck un dayToCheck (i = 2 un j = 8). Tagad mēs salīdzināsim Ričardu ar Dineke (j = 8). Jūs varat viegli redzēt, ka šie datumi un vārdi nav jāaizstāj, jo Ričardam ir “zemāks” datums. Faktiski nav nepieciešams Richard (i = 2) aizstāt ar Jan (j = 9), Wendy (j = 10), Jeroen (j = 11), John (j = 12) un Debby (j) = 13). Tas ir tāpēc, ka Ričardam ir “zemākais” datums. Tādā veidā Excel VBA iegūs (zemākam = i) "zemāko" datumu pirmajā pozīcijā. Lai iegūtu otro “zemāko” datumu otrajā pozīcijā, Excel VBA atkārto tieši tādas pašas darbības attiecībā uz i = 3. Lai iegūtu trešo “zemāko” datumu trešajā pozīcijā, Excel VBA atkārto tieši tādas pašas darbības attiecībā uz i = 4, utt.

8. Aizveriet pirmo cilni Par nākamo (ārpus paziņojuma Ja).

Tālāk i

9. Pārbaudi savu programmu.

Rezultāts:

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave