/ / Sammenlign datoer og tider i Excel VBA

Sammenlign datoer og tider i Excel VBA

Dette eksempelet lærer deg hvordan du skal sammenlign datoer og klokkeslett i Excel VBA. Datoer og tider lagres som tall i Excel og teller antall dager siden 0 januar 1900. Det du ser er avhengig av tallformatet.

1. Skriv inn noen tall i kolonne A.

tall

2. Disse tallene er datoer. Dette er en perfekt måte å legge inn noen datoer uten å bekymre deg om datoformatet. Endre formatet til Dato (Høyreklikk på kolonnen A header, Format Cells og velg Date).

Resultat:

datoer

Merk: Datoer er i US Format. Måneder først, Dager andre. Denne typen format avhenger av dine regionale innstillinger for Windows.

Legg en kommandoknapp på regnearket og legg til følgende kodelinjer:

3. Erklær variabelen i av typen Integer.

Dim i As Integer

4. Legg til en for neste sløyfe.

For i = 1 To 5

Next i

5. Date-funksjonen returnerer gjeldende dato uten tid. Legg til følgende kodelinje i løkken, for å markere alle cellene som inneholder gjeldende dato (12/22/2013).

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

Resultat:

Datoer likt til

6. Legg til følgende kodelinje i løkken, for å markere alle datoer tidligere enn 04/19/2011.

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

Resultat:

Datoer tidligere enn

7. Men hva med tider, vi hører deg si. De er decimaler. Bytt tilbake til Generelt format og endre tall til desimaltall.

Desimale tall

8. Endre formatet til "Dato og klokkeslett" format.

Dato og klokkeslettformat

Resultat:

Datoer og tider

9. Hvis du vil markere alle celler som inneholder gjeldende dato, kan vi ikke bruke kodelinjen på 5 lenger. Hvorfor ikke? Fordi tallene i kolonne A er desimaltall nå. Sammenligning med dato (et helt tall) ville ikke gi noen kamp. (Det ville bare gi en kamp med 12/22/2013 ved midnatt nøyaktig!) Følgende kodelinje virker:

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

Forklaring: vi bruker bare Int-funksjonen. Int-funksjonen runder et tall ned til nærmeste heltall. På denne måten kan vi få datoene uten tid og sammenligne datoene med dato.

Resultat:

Datoer uten tider ligner på

10. Legg til følgende kodelinje for å markere alle cellene som inneholder tider om morgenen.

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

Forklaring: Vi trenger bare decimaler, så vi trekker heltalldelen. Middag (halvveis gjennom dagen) er representert som 0,5. Decimaler lavere enn 0,5 er tidene om morgenen.

Resultat:

Tider i morgen

Les også: