Šiame straipsnyje sukursime makrokomandą, skirtą išskleisti darbo dienas tarp dviejų datų.
Šiame pavyzdyje prieš paleisdami makrokomandą turime nurodyti pradžios datą ir pabaigos datą. Makrokomandos pradžios datos reikšmę parenka iš langelio J8, o pabaigos datos - iš langelio J9. Nurodžius pradžios ir pabaigos datą, makrokomandą galima vykdyti paspaudus mygtuką „Pateikti“ arba paspaudus sparčiuosius klavišus Alt + F8.
Vykdant makrokomandą, ji grįš darbo dienomis tarp dviejų datų naujame lape. Naujai įterptame darbalapyje A stulpelyje yra darbo dienos, po to - atitinkama data B stulpelyje. Išvesties data B stulpelyje bus formatu dd.mm.yy.
Po kiekvienos savaitės bus tuščia eilutė, kad būtų galima atskirti dvi savaites iš eilės.
Loginis paaiškinimas
Makrokomandoje mes naudojome savaitės dienos funkciją, kad atskirtume darbo dienas ir savaitgalius. Formato funkcija naudojama datai rodyti reikiamu formatu.
Savaitės dienos funkcija
Funkcija Savaitės diena grąžina sveiką skaičių, kuris nurodo savaitės dieną.
Sintaksė
Savaitės diena (Data_Value, [First_Day_Of_Week])
Date_Value nurodo datos vertę, kuriai norite rasti savaitės dieną.
First_Day_Of_Week nurodoma, kuri savaitės diena laikoma pirmąja savaitės diena. Kaip įvestis naudojama sveikojo skaičiaus vertė arba vertė, pasirinkta iš „FirstDayOfWeek“ sąrašo. Jei reikšmė nenurodyta, „FirstDayOfWeek.Sunday“ naudojama kaip numatytoji vertė.
Skaičiavimo vertė |
Sveikasis skaičius |
Pastabos |
„FirstDayOfWeek.System“ |
0 |
Pirmoji savaitės diena nurodyta sistemos nustatymuose |
FirstDayOfWeek.Sunday |
1 |
Sekmadienis (numatytasis) |
FirstDayOfWeek.Monday |
2 |
Pirmadienis |
FirstDayOfWeek.Tueday |
3 |
Antradienį |
FirstDayOfWeek.Trečiadienis |
4 |
Trečiadienis |
FirstDayOfWeek.Thursday |
5 |
Ketvirtadienis |
FirstDayOfWeek.Friday |
6 |
Penktadienis |
FirstDayOfWeek.Saturday |
7 |
Šeštadienis |
Kaip matyti iš makrokomandos kodo, mes panaudojome savaitės dieną (i, 2), norėdami nurodyti pirmadienį kaip pirmąją savaitės dieną.
Formato funkcija
Funkcija Formatas laiko datos išraišką kaip įvestį ir grąžina ją kaip suformatuotą eilutę.
Formato funkcijos sintaksė
Formatas (Data_Value, formatas)
Date_Value nurodo datos duomenų tipo vertę.
Formatas naudoja eilutės reikšmę norėdama nurodyti, kokio tipo datos formatas reikalingas.
Šioje lentelėje apibrėžti keli populiarūs simboliai, kuriuos galima naudoti norint sukurti reikiamus datos/laiko formatus:
Charakteris |
apibūdinimas |
d |
rodo dieną kaip skaičių be priekinio nulio (1–31) |
dd |
rodo dieną kaip skaičių su nuliu priekyje (01–31) |
ddd |
rodoma diena kaip santrumpa (sekmadienis - šeštadienis) |
dddd |
rodomas dienos vardas (sekmadienis - šeštadienis) |
w |
rodo savaitės dieną kaip skaičių (nuo 1 sekmadienį iki 7 šeštadienį) |
ww |
rodo metų savaitę kaip skaičių (1–54) |
m |
rodomas mėnuo kaip skaičius be nulio priekyje (1–12) |
mm |
rodomas mėnuo kaip skaičius su nuliu priekyje (01–12) |
mmm |
rodomas mėnuo kaip santrumpa (sausio - gruodžio mėn.) |
mmmm |
rodomas mėnuo kaip visas mėnesio pavadinimas (sausio - gruodžio mėn.) |
q |
ketvirtį parodo kaip skaičių (1–4) |
y |
rodo metų dieną kaip skaičių (1–366) |
yy |
rodo metus kaip 2 skaitmenų skaičių (00–99) |
yyyy |
rodo metus kaip 4 skaitmenų skaičių (100–9999) |
h |
rodo valandą kaip skaičių be nulių (0–23) |
hh |
rodo valandą kaip skaičių su nuliais priekyje (00–23) |
n |
rodo minutes kaip skaičių be nulių (0–59) |
nn |
rodo minutes kaip skaičių su nuliais priekyje (00–59) |
s |
antrasis rodomas kaip skaičius be nulių (0–59) |
ss |
antrasis rodomas kaip skaičius su nuliais priekyje (00–59) |
Norėdami palikti tuščią eilutę kiekvienos savaitės pabaigoje, naudodamiesi savaitės dienos funkcija patikrinome sekmadienius ir padidinome „StartingRow“ kintamojo reikšmę 1, kad kita eilutė liktų tuščia.
Kaip matyti iš makrokomandos kodo, funkciją Formatas panaudojome du kartus skirtingais būdais. Pirma, mes naudojome formatą (i, „ddd“), kad gautume savaitės dieną, ir, antra, naudojome formatą (i, „dd.mm.yy“), kad gautume datą dd.mm.yyyy formatu.
Kodo paaiškinimas
Pritemdyti „NewWorksheet“ kaip darbalapį
Nustatyti „NewWorksheet = Worksheets.Add“
Aukščiau pateiktas kodas naudojamas deklaruoti darbalapio objekto pavadinimą kaip „NewWorksheet“. Darbo lapai. Pridėti metodas naudojamas norint įtraukti naują darbalapį į darbalapių kolekciją. Set teiginys naudojamas inicijuoti deklaruojamą objektą naujai įterptu lapu.
I = nuo pradžios datos iki pabaigos datos
FOR kilpa naudojama ciklui nuo pradžios datos iki pabaigos datos.
Jei savaitės diena (i, 2) <6 Tada
IF sakinys naudojamas sąlygai patikrinti ir kodui vykdyti pagal sąlygą. Aukščiau nurodyta sąlyga patikrins vertės grąžą pagal savaitės dienos funkciją. Jei jis yra mažesnis nei 6, IF sąlyga grąžina true ir IF sakinyje esantis kodas bus vykdomas. Priešingu atveju jis bus praleistas.
StartingRow = 1
StartingRow = StartingRow + 1
„StartingRow“ kintamasis naudojamas judėti darbalapio eilutėse. Pradžioje kintamasis inicijuojamas pirmoje eilutėje. Kiekvieną kartą sėkmingai įvykdžius IF teiginį, kintamojo vertė padidinama 1, pereinant prie kitos lapo eilutės.
Ląstelės (StartingRow, 1)
Ląstelių ypatybė naudojama norint nurodyti tam tikrą darbalapio langelį. Ląstelės (eilutės numeris, stulpelio numeris) gali būti naudojamos nuorodoms į bet kurį darbalapio langelį, kaip parametrus įvedant tam tikrą eilutės numerį ir stulpelio numerį. Kodelyje Ląstelės (StartingRow, 1) 1 nurodomas pirmasis stulpelis, o kintamasis „StartingRow“ apibrėžia eilutės numerį.
Kodus galima lengvai suprasti, nes į makrokomandą įtraukiau komentarus kartu su kodais.
Sekite toliau pateiktą kodą
Parinktis „Explicit Sub ExtractWeekdays ()“ Dviejų duomenų tipo kintamųjų deklaravimas „Dim StartDate As Date“, „EndDate As Date“ „Deklaruoti darbalapio kintamąjį Dim NewWorksheet As Workheet Dim StartingRow, i As Long“ Pradžios datos ir pabaigos datos reikšmių gavimas iš darbalapio StartDate = Sheets ( "Makro"). Diapazonas ("J8"). Reikšmė EndDate = Lakštai ("Makro"). Diapazonas ("J9"). Reikšmė 'Inicijuojamas išvesties pradžios eilutės numeris StartingRow = 1' Naujo darbalapio įterpimas Set NewWorksheet = Worksheets. Pridėti „i = StartDate To EndDate“ Naudodami „Weekday“ metodą, kad patikrintumėte, ar tai yra savaitės diena, ar savaitė, ir jei „Weekday“ (i, 2) <6 Tada „Įterpti vertę naujai įterptame darbalapyje“ Formatavimo metodas naudojamas datos reikšmei formatuoti „NewWorksheet.Cells“ StartingRow, 2) = Formatas (i, "dd.mm.yy") NewWorksheet.Cells (StartingRow, 1) = Formatas (i, "ddd") 'Atnaujinama StartingRow kintamojo vertė pereinant prie kitos eilutės StartingRow = StartingRow + 1 End Jei įterpiama tuščia eilutė savaitgaliui Jei savaitės diena (i, 2) = 7, tada StartingRow = StartingRow + 1 Pabaiga, jei N ext i Set NewWorksheet = Nothing End Sub
Jei jums patiko šis tinklaraštis, pasidalykite juo su draugais „Facebook“. Be to, mus galite sekti „Twitter“ ir „Facebook“.
Mes norėtume išgirsti jūsų nuomonę, praneškite mums, kaip galime pagerinti savo darbą ir padaryti jį geresnį. Rašykite mums el