/ / Vertaa päivämääriä ja aikajaksoja Excel VBA: ssa

Vertaa päivämäärät ja ajat Excel VBA: ssa

Tämä esimerkki opettaa sinulle miten vertaa päivämääriä ja aikoja sisään Excel VBA. Päivämäärät ja ajat tallennetaan Excel-numeroksi ja lasketaan päivien lukumäärä tammikuusta 0, 1900. Mitä näet riippuu numeromuodosta.

1. Syötä joitain sarakkeita sarakkeeseen A.

numerot

2. Nämä numerot ovat päivämääriä. Tämä on täydellinen tapa syöttää joitakin päivämääriä huolestuttaen Päivämäärän muotoa. Muuta muotoa päivämäärään (napsauta hiiren kakkospainiketta sarakkeessa Otsikko, Muotoile solut ja valitse Päivämäärä).

Tulos:

päivämäärät

Huomaa: Päivämäärät ovat Yhdysvaltain formaatissa. Kuukaudet ensimmäinen, Toinen päivä. Tämäntyyppinen muoto riippuu Windowsin alueasetuksista.

Aseta komentopainike laskentatauluun ja lisää seuraavat koodiluokat:

3. Ilmoita tyypin Integer-muuttuja i.

Dim i As Integer

4. Lisää Next-silmukka.

For i = 1 To 5

Next i

5. Date-toiminto palauttaa nykyisen päivämäärän ilman aikaa. Lisää seuraava koodirivi silmukkaan korostaaksesi kaikki nykyisen päivämäärän sisältävät solut (12/22/2013).

If Cells(i, 1).Value = Date Then Cells(i, 1).Font.Color = vbRed

Tulos:

Päivämäärät yhtäläisyyteen

6. Lisää seuraava koodirivi silmukkaan ja korosta kaikki päivämäärät kuin 04/19/2011.

If Cells(i, 1).Value < DateValue("April 19, 2011") Then Cells(i, 1).Font.Color = vbRed

Tulos:

Aikaisemmin kuin

7. Mutta entä kertaa, kuulemme sanot. Ne ovat desimaaleja. Vaihda takaisin yleiseen muotoon ja muuta numerot desimaaliin.

Desimaaliluvut

8. Muuta nyt muotoa "Date and Time" -muotoon.

Päivämäärä ja kellonaika

Tulos:

Päivämäärät ja ajat

9. Jos haluat korostaa kaikki solut, jotka sisältävät nykyisen päivämäärän, emme voi enää käyttää koodilistaa 5: ssä. Miksi ei? Koska sarakkeessa A olevat numerot ovat desimaalilukuja nyt. Vertaa sitä päivämäärään (koko numero) ei anna mitään ottelua. (Se antaisi vastauksen vain 12/22/2013 keskiyöllä täsmälleen!) Seuraava koodirivi toimii:

If Int(Cells(i, 1).Value) = Date Then Cells(i, 1).Font.Color = vbRed

Selitys: käytämme vain int-toimintoa. Int-toiminto kiertyy numeron alaspäin lähimpään kokonaislukuun. Näin voimme saada päivämäärät ilman aikaa ja vertailla näitä päivämääriä päivämäärän kanssa.

Tulos:

Päivämäärät ilman aikakautia

10. Lisää seuraava koodi rivi korostamaan kaikki solut, jotka sisältävät aikoja aamulla.

If (Cells(i, 1).Value - Int(Cells(i, 1).Value)) < 0.5 Then Cells(i, 1).Font.Color = vbRed

Selitys: tarvitsemme vain desimaalit, joten vähennämme kokonaislukuosuuden. Noon (puolivälissä päivässä) on 0,5. Alle 0,5-desimaalit ovat aamu-aikoja.

Tulos:

Aamu-ajat

Lue myös: