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