V delovne liste vnesite delovne dni od ponedeljka do petka z uporabo VBA v programu Microsoft Excel

Anonim

V tem članku bomo ustvarili makro za ekstrakcijo delavnikov med dvema datumoma.

V tem primeru moramo pred zagonom makra določiti začetni in končni datum. Makro izbere vrednost začetnega datuma iz celice J8 in vrednost končnega datuma iz celice J9. Po določitvi začetnega in končnega datuma lahko makro izvedete s pritiskom na gumb »Pošlji« ali s pritiskom na bližnjice Alt + F8.

Ko zaženete makro, bo vrnil tedne med dvema datumoma na novem listu. Na novo vstavljeni delovni list vsebuje tedne v stolpcu A, temu pa sledi ustrezen datum v stolpcu B. Izhodni datum v stolpcu B bo v obliki dd.mm.yy.

Vsakemu tednu bo sledila prazna vrstica za razlikovanje med dvema zaporednima tednoma.

Logična razlaga

V makru smo uporabili funkcijo tedna za razlikovanje med delavniki in vikendi. Funkcija oblikovanja se uporablja za prikaz datuma v zahtevani obliki.

Funkcija med tednom

Funkcija Weekday vrne celoštevilsko vrednost, ki predstavlja dan v tednu.

Sintaksa

Delovni dan (Datum_Vrednost, [Prvi_Dan_Of_Teden])

Datum_Vrednost določa vrednost datuma, za katerega želite najti dan v tednu.

Prvi_Dnev_Tedna določa, kateri dan v tednu se šteje za prvi dan v tednu. Za vnos potrebuje celoštevilčno vrednost ali vrednost, izbrano iz naštevanja FirstDayOfWeek. Če ni podana nobena vrednost, se kot privzeta vrednost uporabi FirstDayOfWeek.Sunday.

Naštevalna vrednost

Celotna vrednost

Opombe

FirstDayOfWeek.System

0

Prvi dan v tednu je določen v sistemskih nastavitvah

FirstDayOfWeek.Senday

1

Nedelja (privzeto)

FirstDayOfWeek.Ponedeljek

2

Ponedeljek

FirstDayOfWeek.torek

3

Torek

FirstDayOfWeek.Wednesday

4

Sreda

FirstDayOfWeek.četrtek

5

Četrtek

FirstDayOfWeek.Friday

6

Petek

FirstDayOfWeek.Sobota

7

Sobota

Kot je razvidno iz kode makra, smo dan tedna (i, 2) uporabili za določitev ponedeljka kot prvega dne v tednu.

Funkcija oblikovanja

Funkcija Format vzame datum datum kot vnos in ga vrne kot oblikovan niz.

Sintaksa funkcije Format

Oblika (Date_Value, format)

Datum_Vrednost podaja vrednost podatkovnega tipa datuma.

Oblika uporablja vrednost niza za določitev vrste zapisa datuma, ki je potreben.

V naslednji tabeli so opredeljeni nekateri priljubljeni znaki, ki jih lahko uporabite za ustvarjanje zahtevanih oblik datuma/časa:

Znak

Opis

d

prikazuje dan kot številko brez začetne ničle (1 - 31)

dd

prikaže dan kot številko z začetno ničlo (01 - 31)

ddd

dan prikazuje kot okrajšavo (ned - sobota)

dddd

prikazuje dan kot polno ime (nedelja - sobota)

w

prikazuje dan v tednu kot številko (1 za nedeljo do 7 za soboto)

ww

prikazuje teden v letu kot številko (1 - 54)

m

prikazuje mesec kot številko brez začetne ničle (1 - 12)

mm

prikaže mesec kot številko z začetno ničlo (01 - 12)

mmm

mesec prikazuje kot okrajšavo (jan - dec)

mmmm

prikazuje mesec kot polno ime meseca (januar - december)

q

prikazuje četrtletje leta kot številko (1 - 4)

y

prikazuje dan v letu kot številko (1 - 366)

yy

prikaže leto kot dvomestno število (00 - 99)

llll

prikaže leto kot 4 -mestno število (100 - 9999)

h

prikazuje uro kot številko brez začetnih ničl (0 - 23)

hh

prikazuje uro kot številko z vodilnimi ničlami ​​(00 - 23)

n

prikazuje minuto kot številko brez začetnih ničl (0 - 59)

nn

prikazuje minuto kot številko z vodilnimi ničlami ​​(00 - 59)

s

prikaže drugo kot številko brez začetnih ničl (0 - 59)

ss

prikaže drugo kot številko z vodilnimi ničlami ​​(00 - 59)

Če želimo ob koncu vsakega tedna pustiti prazno vrstico, smo s funkcijo tedna preverili, ali so nedelje, in vrednost spremenljivke »StartingRow« povečamo za 1, tako da naslednja vrstica ostane prazna.

Kot je razvidno iz kode makra, smo funkcijo Format dvakrat uporabili na različne načine. Prvič, uporabili smo Format (i, "ddd") za prikaz dneva v tednu, drugič pa smo uporabili Format (i, "dd.mm.yy"), da dobimo datum v obliki dd.mm.yyyy.

Razlaga kode

Zatemni nov delovni list kot delovni list

Nastavi NewWorksheet = Delovni listi.Dodaj

Zgornja koda se uporablja za razglasitev imena predmeta delovnega lista kot »NewWorksheet«. Delovni listi. Metoda Add se uporablja za dodajanje novega delovnega lista v zbirko Delovni listi. Stavek set se uporablja za inicializacijo prijavljenega objekta z novo vstavljenim listom.

Za i = začetni datum do končni datum

Zanka FOR se uporablja za zanko od začetnega do končnega datuma.

Če je dan v tednu (i, 2) <6 Potem

Stavek IF se uporablja za preverjanje pogoja in izvedbo kode na podlagi pogoja. Zgornji pogoj preveri vrnitev vrednosti s pomočjo funkcije Weekday. Če je manjše od 6, pogoj IF vrne true in koda v stavku IF se bo izvedla. V nasprotnem primeru bo preskočen.

StartingRow = 1

StartingRow = StartingRow + 1

Spremenljivka StartingRow se uporablja za premikanje po vrsticah na delovnem listu. Na začetku se spremenljivka inicializira v prvo vrstico. Z vsako uspešno izvedbo stavka IF se vrednost spremenljivke poveča za 1 in se premakne v naslednjo vrstico lista.

Celice (StartingRow, 1)

Lastnost celic se uporablja za sklicevanje na določeno celico na delovnem listu. Celice (vrstica_številka, številka stolpca) se lahko uporabijo za sklicevanje na katero koli celico na delovnem listu z vnosom določene številke vrstice in številke stolpca kot parametra. V kodnih celicah (StartingRow, 1) 1 določa prvi stolpec, spremenljivka “StartingRow” pa številko vrstice.

Kode lahko preprosto razumemo, saj sem v makro vključil komentarje skupaj s kodami.

Za kodo sledite spodaj

 Možnost Explicit Sub ExtractWeekdays () "Razglasitev dveh spremenljivk tipa Data Date Dim StartDate kot datum, EndDate As Date" Razglasitev spremenljivke delovnega lista Dim NewWorksheet kot Worksheet Dim StartingRow, i As Long "Pridobivanje vrednosti začetnega datuma in končnega datuma iz delovnega lista StartDate = Sheets ( "Makro"). Obseg ("J8"). Vrednost EndDate = Listi ("Makro"). Razpon ("J9"). Vrednost 'Začetek številke začetne vrstice za izhod StartingRow = 1' Vstavljanje novega delovnega lista Nastavi nov delovni list = Delovni listi. Dodaj za i = začetni datum do končnega datuma 'Uporabite metodo med tednom, da preverite, ali je dan med tednom ali vikendom. Če je dan tedna (i, 2) <6 Nato se za oblikovanje vrednosti datuma NewWorksheet. StartingRow, 2) = Format (i, "dd.mm.yy") NewWorksheet.Cells (StartingRow, 1) = Format (i, "ddd") 'Posodabljanje vrednosti spremenljivke StartingRow za premik v naslednjo vrstico StartingRow = StartingRow + 1 End Če 'Vstavljanje prazne vrstice za vikend Če je teden (i, 2) = 7, potem StartingRow = StartingRow + 1 End Če N ext i Nastavi NewWorksheet = Nič konec pod 

Če vam je bil ta blog všeč, ga delite s prijatelji na Facebooku. Prav tako nam lahko sledite na Twitterju in Facebooku.

Radi bi slišali od vas, nam sporočite, kako lahko izboljšamo svoje delo in ga izboljšamo za vas. Pišite nam na spletnem mestu e -pošte