Excel VBA Weekday-funktion
Veckodag i VBA är en datum- och tidsfunktion som används för att identifiera veckodagen för ett visst datum förutsatt att det är en inmatning, den här funktionen returnerar ett heltal från 1 till 7-intervallet, det finns ett valfritt argument för denna funktion som första veckodagen men om vi inte tillhandahåller den första veckodagen antar funktionen som söndag som första veckodag som standard.
Kan vi berätta veckodagens nummer genom att titta på ett visst datum? Ja, vi kan berätta dagnumret den veckan beroende på veckans startdag. I vanliga kalkylfunktioner har vi en funktion som heter WEEKDAY i excel för att ange veckans nummer för ett visst datum. Även i VBA har vi samma funktion för att hitta samma sak.
Vad gör Weekday Function?
Veckodagsfunktionen returnerar det angivna datumets dagnummer i veckan. Till exempel, om du har datum 1 april till 7 april och om du vill veta dagen för datumet 05 april om veckans startdag är från måndag är det den 5: e dagen.
För att hitta detta har vi samma funktion "Veckodag" i ett kalkylblad såväl som i VBA. Nedan visas funktionens syntax.
Datum: För vilket datum vi försöker hitta veckodagen. Detta borde vara ett korrekt datum med rätt format.
[Första veckodagen ]: För att bestämma veckodagen för det angivna datumet måste vi nämna vad som är den första dagen i veckan. Som standard anser VBA "måndag" som veckans startdag. Bortsett från detta kan vi också leverera nedanstående dagar.
Exempel
Du kan ladda ner denna VBA WeekDay-funktion Excel-mall här - VBA WeekDay-funktion Excel-mallExempel nr 1
För att inleda förfarandet, låt mig börja med ett enkelt exempel först. Nu ska vi försöka hitta veckodagen för datumet "10 april-2019".
Steg 1: Definiera variabeln som sträng
Koda:
Sub Weekday_Example1 () Dim k As String End Sub
Steg 2: Tilldela variabeln värde
Tilldela värdet till variabeln "k" genom att använda WEEKDAY-funktionen.
Koda:
Sub Weekday_Example1 () Dim k As String k = Weekday (End Sub
Steg 3: Ange datum i funktion
Datumet vi testar här är "10-apr-2019", så skicka datumet som "10-apr-2019".
Koda:
Sub Weekday_Example1 () Dim k As String k = Weekday ("10-Apr-2019" End Sub
Steg 4: Visa variabelvärde i MsgBox
Som standard tar den första dagen i veckan som "måndag", så ignorera den här delen. Stäng fästet. I nästa rad visar värdet på variabeln “k” i VBA-meddelanderutan.
Koda:
Sub Weekday_Example1 () Dim k As String k = Weekday ("10-Apr-2019") MsgBox k End Sub
Okej, vi är klara.
Om vi kör koden får vi resultatet som ”4” eftersom från och med söndagen det angivna datumet (10-apr-2019) faller på den fjärde dagen i veckan.
Obs: Mitt systems startdag i veckan är "söndag".På samma sätt, om du ändrar veckodagens startdag fortsätter det att variera. Nedan följer en exempelrad för samma.
Koda:
k = Weekday ("10-Apr-2019", vbMonday) 'Detta returnerar 3 k = Weekday ("10-Apr-2019", vbTuesday)' Detta returnerar 2 k = Weekday ("10-Apr-2019", vbWednesday) 'Detta returnerar 1 k = Veckodag ("10-Apr-2019", vbThursday)' Detta returnerar 7 k = Veckodag ("10-Apr-2019", vbFriday) 'Detta returnerar 6 k = Veckodag ("10-Apr-2019 ", vbSaturday) 'Detta returnerar 5 k = Veckodag (" 10-apr-2019 ", vbSunday)' Detta returnerar 4
Exempel # 2 - Anländer om datumet är i helgen eller inte
Antag att du har ett datum som nedan och att du vill hitta nästa helgdatum så kan vi använda WEEKDAY-funktionen för att nå resultaten.
Vi måste använda WEEKDAY med IF-tillstånd och loopar för att nå resultatet. Jag har skrivit koden för att du ska gå rad för rad för att få logiken.
Koda:
Sub Weekend_Dates () Dim k som heltal För k = 2 till 9 Om veckodag (celler (k, 1). Värde, vbMonday) = 1 Sedan celler (k, 2). Värde = celler (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 = "Det här är faktiskt helgen Datum "Slut om nästa k Slut Sub
Detta kommer fram till resultaten nedan.
Titta på cellerna B6 & B7 vi fick resultatet som "Detta är faktiskt helgedatumet" eftersom datum "04-maj-2019" och "06-apr-2019" är faktiskt helgdatum, så inget behov av att visa helgedatumet för helgdatum. Som standard får vi resultatet som detta.