Kirjoita arkipäivät ma - pe laskentataulukkoon käyttämällä Microsoft Excelin VBA: ta

Anonim

Tässä artikkelissa luomme makron poimimaan arkipäivät kahden päivämäärän välillä.

Tässä esimerkissä meidän on määritettävä alkamis- ja lopetuspäivämäärä ennen makron suorittamista. Makro valitsee alkamispäivän arvon solusta J8 ja lopetuspäivän arvon solusta J9. Aloitus- ja lopetuspäivän määrittämisen jälkeen makro voidaan suorittaa painamalla Lähetä -painiketta tai painamalla pikanäppäimiä Alt + F8.

Makroa ajettaessa se palauttaa arkisin kahden päivämäärän välillä uudella taulukolla. Äskettäin lisätty laskentataulukko sisältää arkipäivää sarakkeessa A ja vastaavaa päivämäärää sarakkeessa B. Tulostuspäivä sarakkeessa B on muodossa pp.kk.vv.

Jokaisen viikon jälkeen tulee tyhjä rivi kahden peräkkäisen viikon erottamiseksi toisistaan.

Looginen selitys

Makrossa olemme käyttäneet Weekday -toimintoa erottaaksesi arkipäivät ja viikonloput. Muoto -toimintoa käytetään päivämäärän näyttämiseen vaaditussa muodossa.

Viikonpäivän toiminto

Viikonpäivä -funktio palauttaa kokonaislukuarvon, joka edustaa viikonpäivää.

Syntaksi

Viikonpäivä (päivämäärä_arvo, [ensimmäinen_päivä_viikko])

Päivämäärä_arvo määrittää päivämäärän arvon, jolle haluat löytää viikonpäivän.

Ensimmäinen_päivä_viikko määrittelee viikonpäivän, jota pidetään viikon ensimmäisenä päivänä. Se käyttää kokonaislukua tai FirstDayOfWeek -luettelosta valitun arvon syötteenä. Jos arvoa ei ole määritetty, oletusarvoksi käytetään FirstDayOfWeek.Sunday.

Luetteloarvo

Kokonaislukuarvo

Huomautukset

FirstDayOfWeek.System

0

Järjestelmän asetuksissa määritetty viikon ensimmäinen päivä

FirstDayOfWeek.Sunnuntai

1

Sunnuntai (oletus)

FirstDayOfWeek.Monday

2

maanantai

FirstDayOfWeek.Tesday

3

tiistai

FirstDayOfWeek.Keskiviikko

4

keskiviikko

FirstDayOfWeek.Thursday

5

torstai

FirstDayOfWeek.Friday

6

perjantai

FirstDayOfWeek.Saturday

7

Lauantai

Kuten makron koodista näkyy, olemme määrittäneet maanantaiksi viikon ensimmäisenä päivänä viikonpäivän (i, 2).

Muoto -toiminto

Muoto -funktio ottaa päivämäärälausekkeen syötteeksi ja palauttaa sen muotoilluna merkkijonona.

Muoto -funktion syntaksi

Muoto (päivämäärä_arvo, muoto)

Päivämäärä_arvo määrittää päivämäärän tietotyypin arvon.

Muoto käyttää merkkijonoarvoa määrittäessään, millaista päivämäärän muotoa tarvitaan.

Seuraavassa taulukossa määritellään joitakin suosittuja merkkejä, joiden avulla voidaan luoda vaaditut päivämäärä- ja aikamuodot:

Merkki

Kuvaus

d

näyttää päivän numerona ilman etunollaa (1 - 31)

dd

näyttää päivän numerona, jossa on nolla edessä (01-31)

DDD

näyttää päivän lyhenteenä (su - la)

dddd

näyttää päivän koko nimenä (sunnuntai - lauantai)

w

näyttää viikonpäivän numerona (1 sunnuntaista 7 lauantaihin)

ww

näyttää vuoden viikon numeroina (1-54)

m

näyttää kuukauden numerona ilman alkunollaa (1-12)

mm

näyttää kuukauden numerona, jossa on nolla edessä (01-12)

mmm

näyttää kuukauden lyhenteenä (tammi - joulukuu)

mmmm

näyttää kuukauden koko kuukauden nimenä (tammikuu - joulukuu)

q

näyttää vuosineljänneksen lukuna (1-4)

y

näyttää vuoden päivän numeroina (1-336)

yy

näyttää vuoden 2 -numeroisena numerona (00-99)

yyyy

näyttää vuoden nelinumeroisena numerona (100-9999)

h

näyttää tunnin numerona ilman nollia (0 - 23)

HH

näyttää tunnit numeroina ja nolla edessä (00 - 23)

n

näyttää minuutit numeroina ilman nollia (0-59)

nn

näyttää minuutit numerona, jossa on nolla (00-59)

s

näyttää toisen numerona ilman alkunollaa (0-59)

ss

näyttää toisen numerona, jossa on nollia (00-59)

Jos haluat jättää tyhjän rivin jokaisen viikon loppuun, olemme tarkistaneet sunnuntaisin viikonpäivätoiminnolla ja kasvattaneet "StartingRow" -muuttujan arvoa 1 niin, että seuraava rivi jää tyhjäksi.

Kuten makron koodista käy ilmi, olemme käyttäneet Muoto -funktiota kaksi kertaa eri tavoilla. Ensinnäkin olemme käyttäneet muotoa (i, "pp") saadaksesi arkipäivän ja toiseksi olemme käyttäneet muotoa (i, "pp.kk.vv") päivämäärän saamiseksi muodossa pp.kk.vvvv.

Koodin selitys

Himmennä NewWorksheet kuin laskentataulukko

Aseta NewWorksheet = Worksheets.Add

Yllä olevaa koodia käytetään ilmoittamaan laskentataulukko -objektin nimeksi "NewWorksheet". Laskentataulukot.Add -menetelmää käytetään uuden laskentataulukon lisäämiseen laskentataulukkoon. Set -käskyä käytetään alustamaan ilmoitettu objekti vasta lisätyllä taulukolla.

Sillä i = aloituspäivä - päättymispäivä

FOR -silmukkaa käytetään silmukkaan alkamispäivästä päättymispäivään.

Jos viikonpäivä (i, 2) <6 Sitten

IF -lauseketta käytetään ehdon tarkistamiseen ja koodin suorittamiseen ehdon perusteella. Yllä oleva ehto tarkistaa viikonpäivän toiminnon arvon palautuksen. Jos se on alle 6, IF -ehto palauttaa true ja IF -käskyn sisällä oleva koodi suoritetaan. Muussa tapauksessa se ohitetaan.

Aloitusrivi = 1

StartingRow = StartingRow + 1

StartingRow -muuttujaa käytetään laskentataulukon rivien selaamiseen. Alussa muuttuja alustetaan ensimmäiselle riville. Jokaisella onnistuneella IF -käskyn suorittamisella muuttujan arvoa kasvatetaan yhdellä, jolloin siirrytään taulukon seuraavalle riville.

Solut (StartingRow, 1)

Solut -ominaisuutta käytetään viittaamaan laskentataulukon tiettyyn soluun. Soluja (rivinumero, sarakkeen_numero) voidaan käyttää viittaamaan mihin tahansa laskentataulukon soluun syöttämällä parametriksi tietty rivin numero ja sarakkeen numero. Koodissa Solut (StartingRow, 1) 1 määrittää ensimmäisen sarakkeen ja muuttuja "StartingRow" määrittää rivinumeron.

Koodit voidaan helposti ymmärtää, koska olen sisällyttänyt kommentteja makron koodien kanssa.

Seuraa koodia alla

 Vaihtoehto Explicit Sub ExtractWeekdays () 'Kahden päivämäärätietomuodon muuttujan ilmoittaminen Dim StartDate as Date, EndDate as Date' Ilmoitus laskentataulukon muuttujasta Dim NewWorksheet kuten laskentataulukko Dim StartingRow, i As Long 'Aloitus- ja lopetuspäivän arvojen saaminen laskentataulukosta StartDate = Sheets ( "Makro"). Alue ("J8"). Arvo EndDate = Sheets ("Makro"). Alue ("J9"). Arvo 'Alustetaan aloitusrivin numero tulostukselle StartingRow = 1' Uuden laskentataulukon lisääminen Aseta NewWorksheet = Laskentataulukot. Lisää For i = StartDate To EndDate 'Käytä Weekday -menetelmää tarkistaaksesi, onko se viikonpäivä vai viikko ja Jos viikonpäivä (i, 2) <6 Sitten' Lisää arvo äskettäin lisättyyn laskentataulukkoon 'Muotoilumenetelmää käytetään päivämäärän arvon NewWorksheet.Cells ( StartingRow, 2) = Muoto (i, "pp.kk.vv") NewWorksheet.Cells (StartingRow, 1) = Muoto (i, "ddd") 'Päivitetään StartingRow -muuttujan arvo siirryttäessä seuraavalle riville StartingRow = StartingRow + 1 End Jos 'Tyhjän rivin lisääminen viikonlopulle Jos viikonpäivä (i, 2) = 7 Sitten StartingRow = Aloitusrivi + 1 Loppu, jos N ext i Set NewWorksheet = Nothing End Sub 

Jos pidit tästä blogista, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.

Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa työtämme ja parantaa sitä sinulle. Kirjoita meille sähköpostitse