300 Primerov

Razvrsti rojstne dneve

Sort Birthdays

Spodaj si bomo ogledali program v Excel VBA to razvrsti rojstne dneve na prve mesece in dneve na drugo (zato prezremo leta). Želimo si rojstni dan z najnižjo mesečno številko na prvem mestu. Če obstajajo rojstni dnevi z enakimi številkami mesecev, želimo najprej rojstni dan z najmanjšo številko dneva. Si pripravljen?





Položaj:

Primer razvrstitve rojstnih dni





Opomba: Datumi so v ameriški obliki. Prvi meseci, drugi dnevi. Ta vrsta zapisa je odvisna od regionalnih nastavitev sistema Windows.

1. Najprej razglasimo osem spremenljivk. Eno spremenljivko datuma imenujemo tempDate, eno spremenljivko String imenujemo tempName. Ostalih šest spremenljivk so celobrojne spremenljivke z imeni mesecToCheck, dayToCheck, monthNext, dayNext, i in j.



NobenatempDateAs Datum, tempNameAs Vrvica
NobenamesecToCheckAs Celo število, dayToCheckAs Celo število, mesec NaslednjiAs Celo število, danNaprejAs Celo število, jazAs Celo število, jAs Celo število

2. Začnemo dve zanki For Next.

kako narediti skupni stolpec v
Zai = 2Za13
Zaj = i + 1Za13

Primer: za i = 2 se preveri j = 3, 4, ..., 12 in 13.

3. Inicializiramo štiri integer spremenljivke. S funkcijo Mesec dobimo mesec datuma, dan pa z datumom.

monthToCheck = mesec (celice (i, 2). vrednost)
dayToCheck = dan (celice (i, 2). vrednost)

monthNext = month (Celice (j, 2). Vrednost)
dayNext = day (Celice (j, 2). Vrednost)

Na primer: na začetku bo za i = 2 datum Bregje in j = i + 1 = 2 + 1 = 3 izbran datum Niels.

4. Za pravilno razvrščanje datumov primerjamo prvi datum (monthToCheck in dayToCheck) z naslednjim datumom (monthNext in dayNext). Če je naslednji datum 'nižji', zamenjamo datume in imena. Dodajte naslednji stavek If Then.

Če(mesec NaslednjiOr(monthNext = monthToCheckIndan NaslednjiPotem

Konec Če

Če zgornja trditev drži, zamenjamo datume in imena.

kako izračunati porazdelitev v

Na primer: za i = 2 in j = 3 se preveri datum Bregja in Nielsa. MonthNext = 6, monthToCheck = 2. Zgornja trditev ne drži, saj je monthNext višji od monthToCheck. Excel VBA poveča j za 1 in ponovi kodne vrstice za i = 2 in j = 4. Z lahkoto lahko vidite, da ima Joost (j = 4) večje število mesecev kot Bregje, zato gremo na naslednjega. Enak rezultat dobimo za j = 5 in j = 6. Ko pridemo do j = 7, imamo naslednje spremenljivke: monthNext = 2 in dayNext = 9. MonthToCheck = 2 in dayToCheck = 12. Zdaj je zgornja trditev resnična od monthNext = monthToCheck in dayNext (9) je nižje od dayToCheck (12).

5. Mi zamenjati datumi. En datum začasno shranimo v tempDate, tako da lahko Excel VBA pravilno zamenja datume. V stavek If dodajte naslednje kodne vrstice.

zamenjati datume
tempDate = Celice (i, 2) .Vrednost
Celice (i, 2) .Vrednost = Celice (j, 2) .Vrednost
Celice (j, 2) .Vrednost = tempDate

6. Enako ravnamo z imeni. V stavek If dodajte naslednje kodne vrstice.

'zamenjati imena
tempName = Celice (i, 1) .Vrednost
Celice (i, 1) .Vrednost = Celice (j, 1) .Vrednost
Celice (j, 1) .Vrednost = tempName

7. Zapremo drugo zanko For Next (Zunaj stavka If).

Naslednjij

Za i = 2 in j = 7 je Excel VBA zamenjal datume in imena. To pomeni, da imamo Richarda na prvem mestu in Bregje na položaju 7. To tudi pomeni, da na začetku naslednje iteracije dobimo nov mesecToCheck in dayToCheck (za i = 2 in j = 8). Zdaj bomo primerjali Richarda z Dinekejem (j = 8). Z lahkoto lahko vidite, da teh datumov in imen ni treba zamenjati, ker ima Richard 'nižji' datum. Pravzaprav ni treba zamenjati Richarda (i = 2) z Jan (j = 9), Wendy (j = 10), Jeroenom (j = 11), Johnom (j = 12) in Debby (j = 13). To je zato, ker ima Richard 'najnižji' zmenek. Tako bo Excel VBA dobil (za i = 2) 'najnižji' datum na prvem mestu. Da bi dobili drugi 'najnižji' datum na drugem mestu, Excel VBA ponovi popolnoma enake korake za i = 3. Da bi dobili tretji 'najnižji' datum na tretjem mestu, Excel VBA ponovi popolnoma enake korake za i = 4, itd.

8. Zaprite prvo zanko For Next (Zunaj stavka If).

kako narediti obseg v
Naslednjijaz

9. Preizkusite svoj program.

Rezultat:

Razvrstite rojstne dneve v Excelu VBA

8/8 Dokončano! Več o datumih in urah>
Pojdi na naslednje poglavje: Dogodki



^