Funkcja dnia tygodnia Excel VBA
Dzień tygodnia w VBA to funkcja daty i godziny, która służy do identyfikowania dnia tygodnia danej daty, pod warunkiem, że jest to dane wejściowe, funkcja zwraca wartość całkowitą z zakresu od 1 do 7, jest opcjonalny argument dostarczony do tej funkcji, którym jest pierwszy dzień tygodnia, ale jeśli nie podamy pierwszego dnia tygodnia, funkcja domyślnie przyjmie niedzielę jako pierwszy dzień tygodnia.
Czy możemy określić numer dnia tygodnia, patrząc na konkretną datę? Tak, możemy podać numer dnia w tym tygodniu w zależności od pierwszego dnia tygodnia. W zwykłych funkcjach arkusza mamy w programie Excel funkcję o nazwie DZIEŃ.TYG., Która podaje numer tygodnia dla określonej daty. W VBA również mamy tę samą funkcję, aby znaleźć to samo.
Co robi funkcja dnia tygodnia?
Funkcja Weekday zwraca numer dnia tygodnia z podanej daty. Na przykład, jeśli masz daty od 1 kwietnia do 7 kwietnia i chcesz poznać dzień 5 kwietnia, jeśli pierwszy dzień tygodnia przypada od poniedziałku, jest to dzień piąty.
Aby to znaleźć, mamy taką samą funkcję „Dzień tygodnia” w arkuszu, jak iw VBA. Poniżej znajduje się składnia funkcji.
Data: dla którego dnia próbujemy znaleźć dzień tygodnia. Powinna to być właściwa data z prawidłowym formatem.
[Pierwszy dzień tygodnia]: Aby określić dzień tygodnia podanej Daty , należy podać, jaki jest pierwszy dzień tygodnia. Domyślnie VBA traktuje „poniedziałek” jako dzień początkowy tygodnia. Oprócz tego możemy dostarczyć również poniższe dni.
Przykłady
Możesz pobrać ten szablon programu Excel z funkcją VBA WeekDay tutaj - Szablon programu Excel z funkcją VBA WeekDayPrzykład 1
Aby rozpocząć postępowanie, zacznę od prostego przykładu. Teraz spróbujemy znaleźć dzień tygodnia dla daty „10-kwiecień-2019”.
Krok 1: Zdefiniuj zmienną jako ciąg
Kod:
Sub Weekday_Example1 () Dim k As String End Sub
Krok 2: Przypisz wartość do zmiennej
Przypisz wartość do zmiennej „k”, stosując funkcję WEEKDAY.
Kod:
Sub Weekday_Example1 () Dim k As String k = Weekday (End Sub
Krok 3: Wprowadź datę w funkcji
Data, którą tutaj testujemy to „10-kwiecień-2019”, więc podaj datę „10-kwiecień-2019”.
Kod:
Sub Weekday_Example1 () Dim k As String k = Weekday ("10-kwiecień-2019" End Sub
Krok 4: Pokaż wartość zmiennej w MsgBox
Domyślnie pierwszy dzień tygodnia to „poniedziałek”, więc zignoruj tę część. Zamknij wspornik. W następnym wierszu pokaż wartość zmiennej „k” w oknie komunikatu VBA.
Kod:
Sub Weekday_Example1 () Dim k As String k = Weekday („10-Apr-2019”) MsgBox k End Sub
OK, gotowe.
Jeśli uruchomimy kod, otrzymamy wynik jako „4”, ponieważ od niedzieli podana data (10.04.2019 r.) Przypada na 4 dzień tygodnia.
Uwaga: Dniem rozpoczęcia tygodnia w moim systemie jest „Niedziela”.Podobnie, jeśli zmienisz dzień rozpoczęcia tygodnia, będzie się on zmieniał. Poniżej znajduje się przykładowa linia dla tego samego.
Kod:
k = Weekday ("10-Apr-2019", vbMonday) 'Zwraca 3 k = Weekday ("10-Apr-2019", vbTuesday)' Zwraca 2 k = Weekday ("10-Apr-2019", vbWed Wednesday) 'Zwraca 1 k = Weekday ("10-Apr-2019", vbTh Thursday) "Zwraca 7 k = Weekday (" 10-Apr-2019 ", vbFriday)" Zwraca 6 k = Weekday ("10-Apr-2019 ", vbSaturday) 'Zwraca 5 k = Weekday (" 10-Apr-2019 ", vbSunday)' Zwraca 4
Przykład nr 2 - Przybądź, czy data jest w weekend, czy nie
Załóżmy, że masz datę taką jak poniżej i chcesz znaleźć datę na następny weekend, a następnie możemy użyć funkcji WEEKDAY, aby uzyskać wyniki.
Aby otrzymać wynik, musimy użyć WEEKDAY z warunkiem IF i pętlami. Napisałem kod, abyś przechodził wiersz po wierszu, aby uzyskać logikę.
Kod:
Sub Weekend_Dates () Dim k As Integer For k = 2 to 9 If Weekday (Cells (k, 1) .Value, vbMonday) = 1 Then Cells (k, 2) .Value = Cells (k, 1) + 5 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 2 Then Cells (k, 2) .Value = Cells (k, 1) + 4 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 3 Then Cells (k, 2) .Value = Cells (k, 1) + 3 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 4 Then Cells (k, 2) .Value = Cells (k, 1) + 2 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 5 Then Cells (k, 2) .Value = Cells (k, 1) + 1 Else Cells (k, 2) .Value = "To jest faktycznie weekend Data „Koniec, jeśli następny k Koniec Sub
To doprowadzi do poniższych wyników.
Spójrz na komórki B6 i B7, które otrzymaliśmy jako „To jest faktycznie data weekendu”, ponieważ daty „04-maj-2019” i „06-kwiecień-2019” są w rzeczywistości datami weekendu, więc nie ma potrzeby pokazywania daty weekendu na weekendy. Domyślnie otrzymujemy taki wynik.