Funkcja DateDiff VBA – Jak obliczyć różnicę dat i czasu

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.

JednostkaInterval
Dzieńd
Dzień rokuy
Godzinah
Minutan
Miesiącm
Kwartałq
Sekundas
Dzień tygodniaw
Tydzień rokuww
Rokyyyy

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łaNumer stałejOpis
vbUseSystem0Zgodnie z ustawieniami systemu / API
vbSunday1Niedziela (default)
vbMonday2Poniedziałek (ISO 8601)
vbTuesday3Wtorek
vbWednesday4Środa
vbThursday5Czwartek
vbFriday6Piątek
vbSaturday7Sobota

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łaNumer stałejOpis
vbUseSystem0Zgodnie z ustawieniami systemu / API
vbFirstJan11Tydzień, w którym wypada 1 stycznia
vbFirstFourDays2Pierwszy tydzień roku posiadający co najmniej 4 dni  (ISO  8601)
vbFirstFullWeek3Pierwszy 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)
Funkcje VBA Excel – Funkcja DateDiff VBA
Funkcje VBA Excel – Funkcja DateDiff VBA

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.

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

%d bloggers like this: