Ievadiet darba dienas no pirmdienas līdz piektdienai darblapā, izmantojot Microsoft Excel VBA

Anonim

Šajā rakstā mēs izveidosim makro, lai iegūtu darba dienas starp diviem datumiem.

Šajā piemērā pirms makro palaišanas mums ir jānorāda sākuma datums un beigu datums. Makro izvēlas sākuma datuma vērtību no šūnas J8 un beigu datuma vērtību no šūnas J9. Pēc sākuma un beigu datuma norādīšanas makro var izpildīt, nospiežot pogu “Iesniegt” vai nospiežot īsinājumtaustiņus Alt + F8.

Palaižot makro, tas atgriezīs darba dienas starp diviem datumiem jaunā lapā. Nesen ievietotajā darblapā A slejā ir iekļautas darba dienas, bet B slejā - atbilstošais datums. Izvades datums B slejā būs formāts dd.mm.yy.

Katrai nedēļai sekos tukša rinda, lai atšķirtu divas nedēļas pēc kārtas.

Loģisks skaidrojums

Makro izmantojām nedēļas dienas funkciju, lai atšķirtu darba dienas un nedēļas nogali. Formatēšanas funkcija tiek izmantota, lai parādītu datumu vajadzīgajā formātā.

Darbdienas funkcija

Funkcija Nedēļas diena atgriež veselu skaitli, kas apzīmē nedēļas dienu.

Sintakse

Nedēļas diena (datuma_vērtība, [pirmā_dienas_nedēļas])

Date_Value norāda datuma vērtību, kurai vēlaties atrast nedēļas dienu.

Pirmā_diena_nedēļā norāda, kura nedēļas diena jāuzskata par nedēļas pirmo dienu. Kā ievade tiek ņemta vesela skaitļa vērtība vai vērtība, kas izvēlēta no FirstDayOfWeek uzskaitījuma. Ja vērtība nav norādīta, tad FirstDayOfWeek.Sunday tiek izmantota kā noklusējuma vērtība.

Uzskaitīšanas vērtība

Vesela skaitļa vērtība

Piezīmes

FirstDayOfWeek.System

0

Pirmā nedēļas diena norādīta sistēmas iestatījumos

FirstDayOfWeek.Sunday

1

Svētdiena (noklusējums)

FirstDayOfWeek.Monday

2

Pirmdiena

FirstDayOfWeek.Tueday

3

Otrdiena

FirstDayOfWeek.Trešdiena

4

Trešdiena

FirstDayOfWeek.Thursday

5

Ceturtdiena

FirstDayOfWeek.Friday

6

Piektdiena

FirstDayOfWeek.Sestdien

7

Sestdiena

Kā redzams no makro koda, mēs esam izmantojuši nedēļas dienu (i, 2), lai norādītu pirmdienu kā nedēļas pirmo dienu.

Formatēšanas funkcija

Funkcija Formāts ņem datuma izteiksmi kā ievadi un atgriež to kā formatētu virkni.

Formāta funkcijas sintakse

Formāts (datuma_vērtība, formāts)

Date_Value norāda datuma datu tipa vērtību.

Formāts izmanto virknes vērtību, lai norādītu, kāda veida datuma formāts ir nepieciešams.

Šajā tabulā ir definētas dažas populāras rakstzīmes, kuras var izmantot, lai izveidotu nepieciešamos datuma/laika formātus:

Raksturs

Apraksts

d

parāda dienu kā skaitli bez nulles priekšā (1 - 31)

dd

parāda dienu kā skaitli ar nulli priekšā (01 - 31)

ddd

parāda dienu kā saīsinājumu (svētdiena - sestdiena)

dddd

parāda dienu kā pilnu vārdu (svētdiena - sestdiena)

w

parāda nedēļas dienu kā skaitli (1 no svētdienas līdz 7 sestdienai)

ww

parāda gada nedēļu kā skaitli (1–54)

m

parāda mēnesi kā skaitli bez nulles sākumā (1–12)

mm

parāda mēnesi kā skaitli ar nulli priekšā (01–12)

mmm

parāda mēnesi kā saīsinājumu (janvāris - decembris)

mmmm

parāda mēnesi kā pilnu mēneša nosaukumu (janvāris - decembris)

q

gada ceturksni parāda kā skaitli (1 - 4)

g

parāda gada dienu kā skaitli (1 - 366)

yy

parāda gadu kā 2 ciparu skaitli (00–99)

yyyy

parāda gadu kā 4 ciparu skaitli (100–9999)

h

parāda stundu kā skaitli bez nullēm priekšā (0 - 23)

hh

parāda stundu kā skaitli ar nullēm priekšā (00 - 23)

n

parāda minūti kā skaitli bez nullēm priekšā (0 - 59)

nn

rāda minūti kā skaitli ar nullēm priekšā (00 - 59)

s

parāda otro kā skaitli bez nullēm priekšā (0 - 59)

ss

parāda otro kā skaitli ar nullēm priekšā (00 - 59)

Lai katras nedēļas beigās atstātu tukšu rindu, mēs esam pārbaudījuši svētdienas, izmantojot nedēļas dienas funkciju, un palielinājām mainīgā “StartingRow” vērtību par 1, lai nākamā rinda paliktu tukša.

Kā redzams makro kodā, funkciju Formāts esam izmantojuši divas reizes dažādos veidos. Pirmkārt, mēs esam izmantojuši formātu (i, "ddd"), lai iegūtu darba dienu, un, otrkārt, esam izmantojuši formātu (i, "dd.mm.yy"), lai iegūtu datumu dd.mm.gggg formātā.

Koda skaidrojums

Aptumšot NewWorksheet kā darblapu

Iestatīt NewWorksheet = Worksheets.Add

Iepriekš minētais kods tiek izmantots, lai darblapas objekta nosaukumu deklarētu kā “NewWorksheet”. Darblapas. Pievienot metodi izmanto, lai pievienotu jauno darblapu darblapu kolekcijai. Set paziņojums tiek izmantots, lai inicializētu deklarēto objektu ar tikko ievietoto lapu.

Attiecībā uz i = sākuma datums līdz beigu datums

FOR cilpa tiek izmantota, lai cilpu no sākuma datuma līdz beigu datumam.

Ja nedēļas diena (i, 2) <6 Tad

IF priekšraksts tiek izmantots, lai pārbaudītu nosacījumu un izpildītu kodu, pamatojoties uz nosacījumu. Iepriekš minētais nosacījums pārbaudīs vērtību atgriešanos, izmantojot nedēļas dienas funkciju. Ja tas ir mazāks par 6, IF nosacījums atgriež patiesu un IF paziņojumā esošais kods tiks izpildīts. Pretējā gadījumā tas tiks izlaists.

Sākuma rinda = 1

StartingRow = StartingRow + 1

Mainīgo StartingRow izmanto, lai pārvietotos pa darblapas rindām. Sākumā mainīgais tiek inicializēts pirmajā rindā. Ar katru veiksmīgu IF priekšraksta izpildi mainīgā vērtība tiek palielināta par 1, pārejot uz nākamo lapas rindu.

Šūnas (StartingRow, 1)

Šūnu rekvizīts tiek izmantots, lai atsauktos uz noteiktu darblapas šūnu. Šūnas (rindas_numurs, kolonnas_numurs) var izmantot, lai atsauktos uz jebkuru darblapas šūnu, kā parametrus ievadot noteiktu rindas numuru un kolonnas numuru. Kodā Šūnas (StartingRow, 1) 1 norāda pirmo kolonnu, un mainīgais “StartingRow” nosaka rindas numuru.

Kodus var viegli saprast, jo makro esmu iekļāvis komentārus kopā ar kodiem.

Lūdzu, sekojiet tālāk norādītajam kodam

 Opcija Explicit Sub ExtractWeekdays () 'Datuma divu veidu mainīgo deklarēšana Datu tips Dim StartDate kā datums, Beigu datums kā datums' "Makro"). Diapazons ("J8"). Vērtība Beigu datums = Izklājlapas ("Makro"). Diapazons ("J9"). Vērtība 'Sākotnējās rindas numura inicializēšana izvadei StartingRow = 1' Jaunas darblapas ievietošana Iestatiet NewWorksheet = Darblapas. Pievienot, lai i = StartDate To EndDate 'Izmantojot nedēļas dienu metodi, lai pārbaudītu, vai tā ir nedēļas diena vai nedēļa, un ja nedēļas diena (i, 2) <6 Pēc tam' Vērtības ievietošana tikko ievietotā darblapā 'Formatēšanas metode tiek izmantota datuma vērtības NewWorksheet.Cells ( StartingRow, 2) = Format (i, "dd.mm.yy") NewWorksheet.Cells (StartingRow, 1) = Format (i, "ddd") 'StartingRow mainīgās vērtības atjaunināšana, lai pārietu uz nākamo rindu StartingRow = StartingRow + 1 End Ja 'Tukšas rindas ievietošana nedēļas nogalē Ja nedēļas diena (i, 2) = 7, tad StartingRow = StartingRow + 1 Beigas, ja N ext i Set NewWorksheet = Nekas Beigu apakš 

Ja jums patika šis emuārs, kopīgojiet to ar saviem draugiem Facebook. Varat arī sekot mums Twitter un Facebook.

Mēs labprāt uzklausītu jūsu viedokli, dariet mums zināmu, kā mēs varam uzlabot savu darbu un padarīt to labāku jums. Rakstiet mums e -pasta vietnē