Zadajte pracovné dni po - pia do pracovného hárka pomocou jazyka VBA v programe Microsoft Excel

Anonim

V tomto článku vytvoríme makro na extrakciu pracovných dní medzi dvoma dátumami.

V tomto prípade musíme pred spustením makra zadať dátum začiatku a dátum ukončenia. Makro vyberie hodnotu dátumu začiatku z bunky J8 a hodnotu dátumu ukončenia z bunky J9. Po zadaní dátumu začiatku a ukončenia je možné makro spustiť stlačením tlačidla „Odoslať“ alebo stlačením klávesových skratiek Alt + F8.

Pri spustení makra vráti pracovné dni medzi dvoma dátumami na nový hárok. Novo vložený pracovný hárok obsahuje pracovné dni v stĺpci A, za ktorými nasleduje príslušný dátum v stĺpci B. Dátum výstupu v stĺpci B bude vo formáte dd.mm.rr.

Po každom týždni bude nasledovať prázdny riadok na rozlíšenie dvoch po sebe nasledujúcich týždňov.

Logické vysvetlenie

V makre sme použili funkciu týždňa na rozlíšenie dní v týždni a víkendov. Funkcia formátovania slúži na zobrazenie dátumu v požadovanom formáte.

Funkcia dňa v týždni

Funkcia Weekday vráti celočíselnú hodnotu, ktorá predstavuje deň v týždni.

Syntax

Pracovný deň (Date_Value, [First_Day_Of_Week])

Dátum_hodnota určuje hodnotu dátumu, pre ktorú chcete nájsť deň v týždni.

First_Day_Of_Week určuje, ktorý deň v týždni sa má považovať za prvý deň v týždni. Ako vstup potrebuje celočíselnú hodnotu alebo hodnotu zvolenú z enumerácie FirstDayOfWeek. Ak nie je zadaná žiadna hodnota, použije sa ako predvolená hodnota FirstDayOfWeek.Sunday.

Hodnota výčtu

Celočíselná hodnota

Poznámky

FirstDayOfWeek.System

0

Prvý deň týždňa určený v nastaveniach systému

FirstDayOfWeek. Nedeľa

1

Nedeľa (predvolené)

FirstDayOfWeek.Monday

2

Pondelok

FirstDayOfWeek.Tuesday

3

Utorok

FirstDayOfWeek.streda

4

Streda

FirstDayOfWeek. Štvrtok

5

Štvrtok

FirstDayOfWeek.Piatok

6

Piatok

FirstDayOfWeek. Sobota

7

Sobota

Ako je zrejmé z kódu makra, použili sme deň v týždni (i, 2) na zadanie pondelka ako prvého dňa v týždni.

Funkcia formátovania

Funkcia Format berie ako vstup výraz dátumu a vracia ho ako formátovaný reťazec.

Syntax funkcie Format

Formát (hodnota_ dátumu, formát)

Dátum_hodnota určuje hodnotu dátového typu dátumu.

Formát používa reťazcovú hodnotu na určenie, aký typ formátu dátumu je požadovaný.

Nasledujúca tabuľka definuje niektoré populárne znaky, ktoré je možné použiť na vytvorenie požadovaných formátov dátumu/času:

Charakter

Popis

d

zobrazuje deň ako číslo bez úvodnej nuly (1 - 31)

dd

zobrazuje deň ako číslo s počiatočnou nulou (01 - 31)

ddd

zobrazuje deň ako skratku (ne - so)

dddd

zobrazuje deň ako úplné meno (nedeľa - sobota)

w

zobrazuje deň v týždni ako číslo (1 v nedeľu až 7 v sobotu)

ww

zobrazuje týždeň v roku ako číslo (1 - 54)

m

zobrazuje mesiac ako číslo bez úvodnej nuly (1 - 12)

mm

zobrazuje mesiac ako číslo s nulou na začiatku (01 - 12)

mmm

zobrazuje mesiac ako skratku (január - december)

mmmm

zobrazuje mesiac ako názov celého mesiaca (január - december)

q

zobrazuje štvrťrok roku ako číslo (1 - 4)

r

zobrazuje deň v roku ako číslo (1 - 366)

rr

zobrazuje rok ako dvojciferné číslo (00 - 99)

rrrr

zobrazuje rok ako 4 -miestne číslo (100 - 9999)

h

zobrazuje hodinu ako číslo bez úvodných núl (0 - 23)

hh

zobrazuje hodinu ako číslo s počiatočnými nulami (00 - 23)

n

zobrazuje minútu ako číslo bez úvodných núl (0 - 59)

nn

zobrazuje minútu ako číslo s úvodnými nulami (00 - 59)

s

zobrazí druhú ako číslo bez úvodných núl (0 - 59)

ss

zobrazí druhú ako číslo s počiatočnými nulami (00 - 59)

Aby sme na konci každého týždňa nechali prázdny riadok, skontrolovali sme nedeľu pomocou funkcie týždňa a zvýšili sme hodnotu premennej „StartingRow“ o 1, aby nasledujúci riadok zostal prázdny.

Ako je vidieť v kóde makra, funkciu Formát sme použili dvakrát rôznymi spôsobmi. Po prvé, použili sme Format (i, "ddd") na získanie dňa v týždni a po druhé, použili sme Format (i, "dd.mm.yy") na získanie dátumu vo formáte dd.mm.yyyy.

Vysvetlenie kódu

Dim NewWorksheet as Workheet

Nastaviť NewWorksheet = pracovné listy.Add

Vyššie uvedený kód sa používa na deklarovanie názvu objektu pracovného hárka ako „NewWorksheet“. Metóda Worksheets.Add sa používa na pridanie nového pracovného hárka do zbierky pracovných hárkov. Príkaz Set sa používa na inicializáciu deklarovaného objektu s novo vloženým listom.

For i = dátum začiatku až dátum konca

Slučka FOR sa používa na cyklovanie od počiatočného dátumu do koncového dátumu.

Ak pracovný deň (i, 2) <6 Potom

Príkaz IF sa používa na kontrolu stavu a spustenie kódu na základe podmienky. Vyššie uvedená podmienka skontroluje návrat hodnoty pomocou funkcie Weekday. Ak je menší ako 6, podmienka IF vráti hodnotu true a spustí sa kód vo výkaze IF. V opačnom prípade sa preskočí.

Počiatočný riadok = 1

StartingRow = StartingRow + 1

Premenná StartingRow sa používa na pohyb v riadkoch v hárku. Na začiatku je premenná inicializovaná do prvého riadka. S každým úspešným vykonaním príkazu IF sa hodnota premennej zvýši o 1, čím sa presunie na nasledujúci riadok v hárku.

Bunky (počiatočný riadok, 1)

Vlastnosť buniek sa používa na odkazovanie na konkrétnu bunku v pracovnom hárku. Bunky (číslo_ riadku, číslo stĺpca) je možné použiť na odkazovanie na ľubovoľnú bunku v hárku zadaním konkrétneho čísla riadka a čísla stĺpca ako parametrov. V kóde Bunky (StartingRow, 1) 1 určuje prvý stĺpec a premenná „StartingRow“ definuje číslo riadka.

Kódy je možné ľahko pochopiť, pretože som do makra zahrnul komentáre spolu s kódmi.

Pri kódovaní postupujte podľa nižšie uvedených pokynov

 Voľba Explicitná čiastková extrakciaVýždne () „Vyhlásenie dvoch premenných dátového typu Dátum Dim Začiatok dátumu ako dátum, Koniec dátumu ako dátum“ Vyhlásenie premennej pracovného hárka Dim Nový pracovný list ako pracovný hárok Dim StartingRow, i As Long „Získanie hodnôt dátumu začiatku a dátumu ukončenia z listu Dátum začiatku = listy ( "Makro"). Rozsah ("J8"). Hodnota EndDate = listy ("Makro"). Rozsah ("J9"). Hodnota 'Inicializácia počiatočného čísla riadka pre výstup StartingRow = 1' Vkladanie nového pracovného hárka Nastaviť NewWorksheet = pracovné listy. Add For i = StartDate to EndDate 'Použitie metódy Weekday na kontrolu, či je Weekday alebo weekand If Weekday (i, 2) <6 Then' Inserting value on newly entered worksheet 'Format format is used for formatting the date value NewWorksheet.Cells ( StartingRow, 2) = Format (i, "dd.mm.yy") NewWorksheet.Cells (StartingRow, 1) = Format (i, "ddd") 'Aktualizácia hodnoty premennej StartingRow na presun do ďalšieho riadku StartingRow = StartingRow + 1 End Ak 'Vkladanie prázdneho riadka na víkend Ak Pracovný deň (i, 2) = 7 Potom StartingRow = StartingRow + 1 End If N ext i Nastaviť NewWorksheet = Nothing End Sub 

Ak sa vám tento blog páčil, zdieľajte ho so svojimi priateľmi na Facebooku. Môžete nás tiež sledovať na Twitteri a Facebooku.

Budeme radi, ak sa nám ozvete, dajte nám vedieť, ako môžeme zlepšiť našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku