Ostatnio zaktualizowano: 30 października, 2017 przez admin
1. Funkcja DateDiff VBA – Opis
Funkcja DateDiff VBA zwraca różnicę pomiędzy dwiema datami. W zależności od tego, co wprowadzimy w argumentach funkcji, możemy otrzymać różnicę w dniach, miesiącach, latach, tygodniach, kwartałach, godzinach, minutach, sekundach itp. W argumentach funkcji możemy wprowadzić także informację, który dzień jest pierwszym dniem tygodnia np dla Polski – poniedziałek. W angielskiej nomenklaturze będzie to niedziela.
2. Funkcja VBA DateDiff – Składnia
'datatalk.pl DateDiff(Interval As String, Date1, Date2, [FirstDayOfWeek As VbDayOfWeek = vbSunday], [FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1])
Interval: Sprecyzowanie jednostki czasu, w których chcemy uzyskać wynik. Nazwy jednostek wprowadzamy w cudzysłowie, np „YYYY”, jeśli chcemy uzyskać różnicę w latach.
Jednostka | Interval |
Dzień | d |
Dzień roku | y |
Godzina | h |
Minuta | n |
Miesiąc | m |
Kwartał | q |
Sekunda | s |
Dzień tygodnia | w |
Tydzień roku | ww |
Rok | yyyy |
Date1: Data lub czas, od którego odejmujemy.
Date2: Data lub czas, który odejmujemy.
FirstDayOfWeek: Określenie pierwszego dnia tygodnia. W tym argumencie wprowadzamy stałą lub jej numer. Poniżej tabela przedstawiająca to, co powinniśmy wprowadzać w tym argumencie. Argument nie jest obowiązkowy.
Stała | Numer stałej | Opis |
vbUseSystem | 0 | Zgodnie z ustawieniami systemu / API |
vbSunday | 1 | Niedziela (default) |
vbMonday | 2 | Poniedziałek (ISO 8601) |
vbTuesday | 3 | Wtorek |
vbWednesday | 4 | Środa |
vbThursday | 5 | Czwartek |
vbFriday | 6 | Piątek |
vbSaturday | 7 | Sobota |
FirstWeekOfYear – Określenie pierwszego tygodnia roku w zależności o parametrów funkcji. W tym argumencie wprowadzamy stałą lub jej numer. Poniżej tabela przedstawiająca to, co powinniśmy wprowadzać w tym argumencie. Argument nie jest obowiązkowy.
Stała | Numer stałej | Opis |
vbUseSystem | 0 | Zgodnie z ustawieniami systemu / API |
vbFirstJan1 | 1 | Tydzień, w którym wypada 1 stycznia |
vbFirstFourDays | 2 | Pierwszy tydzień roku posiadający co najmniej 4 dni (ISO 8601) |
vbFirstFullWeek | 3 | Pierwszy pełny tydzień w roku |
3. Funkcja VBA DateDiff – PrzykładZwrot funkcji: Number / Wartość liczbowa z różnicy dat, czasów lub dat i czasu.
Jak używać funkcji DateDiff w VBA Excel? Poniżej przykład użycia funkcji DateDiff w Edytorze VisualBasic.
Przykład 1: VBA Różnica dat w dniach.
'datatalk.pl Dim datValue1 As Date Dim datValue2 As Date datValue1 = #12/25/2017 11:45:12 AM# datValue2 = #11/20/2018 8:22:59 AM# MsgBox DateDiff("d", datValue1, datValue2, vbMonday) Range("A1") = DateDiff("d", datValue1, datValue2, vbMonday)
Przykład 2: VBA Różnica dat w miesiącach.
'datatalk.pl Dim datValue1 As Date Dim datValue2 As Date datValue1 = #12/25/2017 11:45:12 AM# datValue2 = #11/20/2018 8:22:59 AM# MsgBox DateDiff("m", datValue1, datValue2, 2) Range("A2") = DateDiff("m", datValue1, datValue2, vbMonday)
Przykład 3: Różnica dat w tygodniach VBA
'datatalk.pl Dim datValue1 As Date Dim datValue2 As Date datValue1 = #12/25/2017 11:45:12 AM# datValue2 = #11/20/2018 8:22:59 AM# MsgBox DateDiff("w", datValue1, datValue2, , 3) Range("A3") = DateDiff("w", datValue1, datValue2, , vbFirstFourDays)
Przykład 4: VBA Różnica dat w latach.
'datatalk.pl Dim datValue1 As Date Dim datValue2 As Date datValue1 = #12/25/2017 11:45:12 AM# datValue2 = #11/20/2018 8:22:59 AM# MsgBox DateDiff("yyyy", datValue1, datValue2, 2) Range("A4") = DateDiff("yyyy", datValue1, datValue2, vbMonday)
Przykład 5: Różnica dat i czasu w godzinach VBA.
'datatalk.pl Dim datValue1 As Date Dim datValue2 As Date datValue1 = #12/25/2017 11:45:12 AM# datValue2 = #11/20/2018 8:22:59 AM# MsgBox DateDiff("h", datValue1, datValue2) Range("A5") = DateDiff("h", datValue1, datValue2)
Przykład 6: Różnica dat i czasu w minutach VBA.
'datatalk.pl Dim datValue1 As Date Dim datValue2 As Date datValue1 = #12/25/2017 11:45:12 AM# datValue2 = #11/20/2018 8:22:59 AM# MsgBox DateDiff("n", datValue1, datValue2) Range("A6") = DateDiff("m", datValue1, datValue2)
Przykład 7: Różnica dat i czasu w sekundach VBA.
'datatalk.pl Dim datValue1 As Date Dim datValue2 As Date datValue1 = #12/25/2017 11:45:12 AM# datValue2 = #11/20/2018 8:22:59 AM# MsgBox DateDiff("s", datValue1, datValue2) Range("A7") = DateDiff("s", datValue1, datValue2)
Przykład 8: Różnica dat w kwartałach VBA.
'datatalk.pl Dim datValue1 As Date Dim datValue2 As Date datValue1 = #12/25/2017 11:45:12 AM# datValue2 = #11/20/2018 8:22:59 AM# MsgBox DateDiff("Q", datValue1, datValue2) Range("A7") = DateDiff("Q", datValue1, datValue2)
Plik z przykładami: funkcje_vba_excel_datediff.xlsm
4. Funkcja VB DateDiff – Dodatkowe informacje
- Jeśli chcemy, by podczas liczenia pierwszym dniem tygodnia był poniedziałek, w czwartym argumencie funkcji wpiszmy liczbę 2 lub vbMonday.
- Jeśli chcemy by pierwszym tygodniem roku był pierwszy pełny tydzień, w czwartym argumencie funkcji wpiszmy liczbę 3.
- By wartość daty i czasu była prawidłowo widoczna dla VB, wartości wprowadzamy w cudzysłowie lub pomiędzy znakami hash ##
5. Funkcja DateDiff VisualBasic – Gdzie stosować?
Funkcję możemy stosować w: Excel 2003, Excel 2007, Excel 2010, Excel 2013, Excel 2016.
Artykuł jest częścią listy funkcji VBA Excel. Listę wszystkich funkcji VBA znajdziesz pod tym adresem: Funkcje VBA.