Rūšiuokite gimtadienius „Excel VBA“ - paprastos „Excel“ makrokomandos

Turinys

Žemiau apžvelgsime programą Excel VBA kad rūšiuoja gimtadienius pirmą mėnesį ir antrą dieną (taigi mes ignoruojame metus). Mes norime, kad gimtadienis su mažiausiu mėnesio numeriu būtų pirmoje pozicijoje. Jei yra gimtadieniai su vienodais mėnesio skaičiais, pirmiausia norime, kad gimtadienis būtų mažiausias. Ar tu pasiruošęs?

Situacija:

Pastaba: datos nurodytos JAV formatu. Pirmieji mėnesiai, antros dienos. Šio tipo formatas priklauso nuo jūsų regioninių „Windows“ nustatymų.

1. Pirmiausia deklaruojame aštuonis kintamuosius. Vieną datos kintamąjį vadiname tempDate, vieną eilutės kintamąjį - tempName. Kiti šeši kintamieji yra sveikieji kintamieji su pavadinimais monthToCheck, dayToCheck, monthNext, dayNext, i ir j.

Temperatūros temp. Data kaip data, tempName kaip eilutė
Dim monthToCheck As Integer, dayToCheck As Integer, monthNext As Integer, dayNext As Integer, i As Integer, j As Integer

2. Mes pradedame dvi „For Next“ kilpas.

Jei i = nuo 2 iki 13
Jei j = i + 1 iki 13

Pavyzdys: jei i = 2, tikrinami j = 3, 4,…, 12 ir 13.

3. Inicijuojame keturis sveikojo skaičiaus kintamuosius. Mes naudojame mėnesio funkciją datos mėnesiui gauti, o dieną - datos dienai gauti.

monthToCheck = month (Ląstelės (i, 2). Value)
dayToCheck = diena (Ląstelės (i, 2). Vertė)
monthNext = mėnuo (Ląstelės (j, 2). Vertė)
dayNext = diena (Ląstelės (j, 2). Vertė)

Pavyzdžiui: pradžioje, kai i = 2; Bregje data, o j = i + 1 = 2 + 1 = 3; bus pasirinkta Nielso data.

4. Norėdami tinkamai surūšiuoti datas, palyginame pirmąją datą (monthToCheck ir dayToCheck) su kita data (monthNext ir dayNext). Jei kita data yra „žemesnė“, keičiame datas ir vardus. Pridėkite šį teiginį „Jei tada“.

Jei (monthNext <monthToCheck) Arba (monthNext = monthToCheck And dayNext <dayToCheck) Tada
Pabaiga Jei

Jei aukščiau pateiktas teiginys teisingas, keičiame datas ir vardus.

Pavyzdžiui: jei i = 2 ir j = 3, tikrinama Bregje ir Niels data. MonthNext = 6, monthToCheck = 2. Aukščiau pateiktas teiginys netiesa, nes monthNext yra didesnis nei monthToCheck. „Excel VBA“ padidina j 1 ir kartoja i = 2 ir j = 4 kodo eilutes. Nesunkiai matote, kad „Joost“ (j = 4) turi didesnį mėnesio skaičių nei Bregje, todėl pereiname prie kito. Mes gauname tą patį rezultatą, kai j = 5 ir j = 6. Kai pasiekiame j = 7, turime tokius kintamuosius: monthNext = 2 ir dayNext = 9. MonthToCheck = 2 ir dayToCheck = 12. Dabar aukščiau pateiktas teiginys yra teisingas nuo monthNext = monthToCheck ir dayNext (9) yra mažesnis už dayToCheck (12).

5. Mes keičiame datas. Vieną datą laikinai išsaugome „tempDate“, kad „Excel VBA“ galėtų tinkamai pakeisti datas. Prie sakinio „If“ pridėkite šias kodo eilutes.

'keisk datas
tempDate = Ląstelės (i, 2). Vertė
Ląstelės (i, 2). Vertė = ląstelės (j, 2). Vertė
Ląstelės (j, 2). Vertė = tempDate

6. Mes darome tą patį su pavadinimais. Prie sakinio „If“ pridėkite šias kodo eilutes.

'keisk vardus
tempName = Ląstelės (i, 1). Vertė
Ląstelės (i, 1). Vertė = ląstelės (j, 1). Vertė
Ląstelės (j, 1). Vertė = tempName

7. Uždarome antrąją „For Next“ kilpą (už teiginio „If“).

Kitas j

Jei i = 2 ir j = 7, „Excel VBA“ pakeitė datas ir pavadinimus. Tai reiškia, kad Richardas yra pirmoje pozicijoje, o Bregje - 7 pozicijoje. Tai taip pat reiškia, kad kito mėnesio pradžioje gausime naują monthToCheck ir dayToCheck (i = 2 ir j = 8). Dabar palyginsime Ričardą su Dineke (j = 8). Nesunkiai matote, kad tų datų ir vardų keisti nereikia, nes Ričardas turi „žemesnę“ datą. Tiesą sakant, nereikia pakeisti Richardo (i = 2) Jan (j = 9), Wendy (j = 10), Jeroen (j = 11), John (j = 12) ir Debby (j) = 13). Taip yra todėl, kad Richardas turi „žemiausią“ datą. Tokiu būdu „Excel VBA“ (i = 2) gaus „mažiausią“ datą pirmoje pozicijoje. Norėdami gauti antrąją „žemiausią“ datą antroje pozicijoje, „Excel VBA“ pakartoja tuos pačius veiksmus, kai i = 3. Kad trečiojoje pozicijoje būtų trečioji „žemiausia“ data, „Excel VBA“ kartoja tuos pačius veiksmus, kai i = 4, ir kt.

8. Uždarykite pirmąją „For Next“ kilpą (už teiginio „If“ ribų).

Kitas I.

9. Išbandykite savo programą.

Rezultatas:

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave