Angiv hverdage mandag - fre i et regneark ved hjælp af VBA i Microsoft Excel

Anonim

I denne artikel vil vi oprette en makro til at udtrække hverdagene mellem to datoer.

I dette eksempel skal vi angive startdato og slutdato, før vi kører makroen. Makro vælger startdatoværdien fra celle J8 og slutdatoværdi fra celle J9. Efter angivelse af start- og slutdato kan makroen udføres ved at trykke på knappen "Send" eller trykke på genvejstaster Alt + F8.

Når makroen køres, vender den tilbage på hverdage mellem to datoer på et nyt ark. Det nyligt indsatte regneark indeholder hverdage i kolonne A, efterfulgt af den respektive dato i kolonne B. Outputdato i kolonne B vil være i dd.mm.åå -format.

Hver uge efterfølges af en tom række for at skelne mellem to på hinanden følgende uger.

Logisk forklaring

I makroen har vi brugt Weekday -funktionen til at skelne mellem hverdage og weekender. Formatfunktionen bruges til at vise datoen i det nødvendige format.

Ugedag funktion

Funktionen Ugedag returnerer en heltalværdi, der repræsenterer ugedagen.

Syntaks

Ugedag (Date_Value, [First_Day_Of_Week])

Dato_værdi angiver datoværdien, som du vil finde ugedag for.

First_Day_Of_Week angiver, hvilken ugedag der skal betragtes som den første i ugen. Det tager en heltalværdi eller den værdi, der er valgt fra FirstDayOfWeek -opregningen som input. Hvis der ikke er angivet nogen værdi, bruges FirstDayOfWeek.Sunday som standardværdi.

Optællingsværdi

Heltal værdi

Bemærkninger

FirstDayOfWeek.System

0

Første ugedag angivet i systemindstillinger

FirstDayOfWeek.Sunday

1

Søndag (standard)

FirstDayOfWeek.Manday

2

Mandag

FirstDayOfWeek.Tirsdag

3

tirsdag

FirstDayOfWeek.Wednesday

4

onsdag

FirstDayOfWeek.Torsdag

5

torsdag

FirstDayOfWeek.Friday

6

Fredag

FirstDayOfWeek. Lørdag

7

lørdag

Som det ses af makroens kode, har vi brugt Weekday (i, 2) til at angive mandag som første ugedag.

Format funktion

Formateringsfunktionen tager et datoudtryk som input og returnerer det som en formateret streng.

Syntaks for Format -funktion

Format (dato_værdi, format)

Dato_værdi angiver værdien af ​​datatypen.

Format bruger strengværdi til at angive, hvilken type datoformat der kræves.

Følgende tabel definerer nogle populære tegn, som man kan bruge til at oprette nødvendige dato/klokkeslætformater:

Karakter

Beskrivelse

d

viser dagen som et tal uden et førende nul (1 - 31)

dd

viser dagen som et tal med et førende nul (01 - 31)

ddd

viser dagen som en forkortelse (søn - lør)

dddd

viser dagen som et fuldt navn (søndag - lørdag)

w

viser ugedagen som et tal (1 for søndag til 7 for lørdag)

ww

viser årets uge som et tal (1 - 54)

m

viser måneden som et tal uden et førende nul (1 - 12)

mm

viser måneden som et tal med et førende nul (01 - 12)

mmm

viser måneden som en forkortelse (jan - dec)

mmmm

viser måneden som et helt månedsnavn (januar - december)

q

viser årets kvartal som et tal (1 - 4)

y

viser årets dag som et tal (1 - 366)

åå

viser året som et 2 -cifret tal (00 - 99)

åååå

viser året som et firecifret tal (100 - 9999)

h

viser timen som et tal uden førende nuller (0 - 23)

hh

viser timen som et tal med førende nuller (00 - 23)

n

viser minuttet som et tal uden førende nuller (0 - 59)

nn

viser minuttet som et tal med førende nuller (00 - 59)

s

viser det andet som et tal uden førende nuller (0 - 59)

ss

viser det andet som et tal med førende nuller (00 - 59)

For at efterlade en tom række i slutningen af ​​hver uge har vi tjekket søndage ved hjælp af hverdagsfunktion og øget værdien af ​​variablen "Startrække" med 1, så den næste række forbliver tom.

Som det ses i makroens kode, har vi brugt funktionen Format to gange på forskellige måder. For det første har vi brugt Format (i, "ddd") for at få hverdagen og for det andet har vi brugt Format (i, "dd.mm.åå") for at få datoen i dd.mm.åååå -format.

Kode forklaring

Dim NewWorksheet som regneark

Indstil NewWorksheet = Worksheets.Add

Ovenstående kode bruges til at deklarere regnearkets objektnavn som "NewWorksheet". Arbejdsark. Tilføj metode bruges til at tilføje det nye regneark i regnearkssamlingen. Set sætning bruges til at initialisere det deklarerede objekt med det nyligt indsatte ark.

For i = StartDate Til EndDate

FOR loop bruges til at loop fra startdato til slutdato.

Hvis Ugedag (i, 2) <6 Så

IF -sætning bruges til at kontrollere tilstanden og udføre koden baseret på betingelsen. Ovenstående betingelse vil kontrollere værdiretur med funktionen Ugedag. Hvis det er mindre end 6, returnerer IF -tilstanden true, og koden inde i IF -sætningen udføres. Ellers springes det over.

Startrække = 1

Startende = Startrække + 1

StartingRow -variabel bruges til at bevæge sig gennem rækker på regnearket. Ved start initialiseres variablen til første række. Ved hver vellykket udførelse af IF -sætning øges variabelværdien med 1 og flytter til næste række i arket.

Celler (Startrække, 1)

Celleegenskab bruges til at referere til en bestemt celle på regnearket. Celler (row_number, column_number) kan bruges til at referere til enhver celle i regnearket ved at indtaste et bestemt rækkenummer og kolonnenummer som parametre. I koden Celler (Starterække, 1) angiver 1 den første kolonne, og variablen "Startrække" definerer rækkenummeret.

Man kan let forstå koderne, da jeg har inkluderet kommentarer sammen med koder i makroen.

Følg venligst nedenstående for koden

 Valgmulighed Eksplicit underekstraktWeekdays () 'Deklaration af to variabler af datatypet Dim StartDate As Date, EndDate As Date' Deklarerende regnearksvariabel Dim NewWorksheet As Worksheet Dim StartRow, i As Long 'Hentning af startdato og slutdatoværdier fra regneark StartDate = Sheets ( "Makro"). Område ("J8"). Værdi EndDate = Sheets ("Makro"). Område ("J9"). Værdi 'Initialiserer startrækket for output StartRow = 1' Indsættelse af nyt regneark Indstil NewWorksheet = regneark. Tilføj til i = StartDate til EndDate 'Brug af Weekday -metoden til at kontrollere, om det er Ugedag eller uge og Hvis Ugedag (i, 2) <6 Derefter bruges' Indsætning af værdi på nyindsat regneark 'Formatmetode til formatering af datoværdien NewWorksheet.Cells ( StartingRow, 2) = Format (i, "dd.mm.yy") NewWorksheet.Cells (StartingRow, 1) = Format (i, "ddd") 'Opdaterer StartRow -variabelværdi for at flytte til næste række StartRow = StartRow + 1 End Hvis 'Indsætning af tom række til weekend Hvis Ugedag (i, 2) = 7 Derefter starter Start = StartRække + 1 Afslut hvis N ext i Set NewWorksheet = Intet slutter Sub 

Hvis du kunne lide denne blog, kan du dele den med dine venner på Facebook. Du kan også følge os på Twitter og Facebook.

Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet