/ / Porównaj daty i czasy w Excelu VBA

Porównaj daty i czasy w Excelu VBA

Ten przykład uczy, jak to zrobić porównaj daty i godziny w Excel VBA. Daty i godziny są zapisywane jako liczby w programie Excel i liczą liczbę dni od 0 stycznia 1900. To, co widzisz, zależy od formatu liczb.

1. Wprowadź liczby w kolumnie A.

Liczby

2. Te liczby są datami. To doskonały sposób na wprowadzenie niektórych dat bez martwienia się o format daty. Zmień format na Data (kliknij prawym przyciskiem myszy nagłówek kolumny A, Formatuj komórki i wybierz Data).

Wynik:

Daktyle

Uwaga: daty są w formacie amerykańskim. Najpierw miesiące, dni drugie. Ten typ formatu zależy od ustawień regionalnych systemu Windows.

Umieść przycisk polecenia w arkuszu i dodaj następujące wiersze kodu:

3. Zadeklaruj zmienną i typu Integer.

Dim i As Integer

4. Dodaj pętlę For Next.

For i = 1 To 5

Next i

5. Funkcja Date zwraca bieżącą datę bez czasu. Dodaj następującą linię kodu do pętli, aby podświetlić wszystkie komórki zawierające bieżącą datę (12/2/2013).

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

Wynik:

Daty równe

6. Dodaj następujący wiersz kodu do pętli, aby podświetlić wszystkie daty wcześniej niż 19.04.2011.

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

Wynik:

Daty wcześniejsze niż

7. A co z czasami, słyszymy, jak mówisz. Są to cyfry dziesiętne. Wróć do ogólnego formatu i zmień liczby na liczby dziesiętne.

Liczby dziesiętne

8. Teraz zmień format na "Date and Time" format.

Format daty i czasu

Wynik:

Daty i czasy

9. Jeśli chcesz podświetlić wszystkie komórki zawierające aktualną datę, nie możemy już korzystać z linii kodu o 5. Dlaczego nie? Ponieważ liczby w kolumnie A są teraz liczbami dziesiętnymi. Porównywanie go z datą (liczbą całkowitą) nie dawałoby żadnego dopasowania. (Dałoby to tylko mecz z 12/22/2013 dokładnie o północy!) Następująca linia kodu działa:

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

Objaśnienie: po prostu używamy funkcji Int. Funkcja Int zaokrągla liczbę w dół do najbliższej liczby całkowitej. W ten sposób możemy uzyskać daty bez dat i porównać te daty z datą.

Wynik:

Daty bez czasów równe

10. Dodaj następującą linię kodu, aby podświetlić wszystkie komórki zawierające poranki.

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

Objaśnienie: potrzebujemy tylko liczb dziesiętnych, więc odejmujemy część całkowitą. Południe (w połowie dnia) jest reprezentowane jako 0,5. Dziesiętne wartości mniejsze niż 0,5 oznaczają poranki.

Wynik:

Czasy w godzinach porannych

Przeczytaj również: