Aprēķiniet darbdienu skaitu starp diviem datumiem, izmantojot Microsoft Excel VBA

Anonim

Šajā rakstā mēs izveidosim lietotāja definētu funkciju (UDF), lai skaitītu darba dienu skaitu starp norādītajiem datumiem, ieskaitot vai neskaitot sestdienas un svētdienas kā nedēļas pārtraukumus.

Neapstrādāti dati šajā piemērā ietver sākuma datumu un beigu datumu. Mēs vēlamies saskaitīt darba dienu skaitu starp šiem datumiem.

Mēs esam norādījuši svētku datumus lapas “Brīvdienas” A slejā.

Programmā Excel ir iebūvēta funkcija NETWORKDAYS, lai saskaitītu darba dienu skaitu starp intervālu.

Funkcijas NETWORKDAYS sintakse

TĪKLDIENAS (sākuma datums, beigu datums, [brīvdienas])

Šī funkcija izslēgs brīvdienu sarakstā norādīto datumu, vienlaikus skaitot darba dienu skaitu.

Šī funkcija sestdienās un svētdienās pēc noklusējuma uzskata nedēļas pārtraukumus, tāpēc mēs nevaram saskaitīt darba dienu skaitu, ja mums ir tikai viena brīvā nedēļa.

Mēs esam izveidojuši pielāgotu funkciju “CountWorkingDays”, lai saskaitītu darba dienu skaitu starp intervālu. Šī pielāgotā funkcija risina funkcijas NETWORKDAYS problēmu. Šajā funkcijā mēs varam saskaitīt darba dienu skaitu, pat ja sestdienā vai svētdienā ir tikai viena brīvā nedēļa.

Pielāgotas funkcijas sintakse

CountWorkingDays (sākuma datums, beigu datums, ieskaitot sestdienas, ieskaitot svētdienas)

InclSaturdays un InclSundays ir neobligāti parametri. Pēc noklusējuma abām ir TRUE vērtības. Lai sestdienas un svētdienas mainītu uz darba dienām, mainiet attiecīgā parametra vērtību uz FALSE.

Microsoft ieviesa funkciju NETWORKDAYS.INTL ar programmu Excel 2010. Šī funkcija risina NETWORKDAYS funkcijas problēmu. Šajā funkcijā mēs varam norādīt nedēļas brīvdienas. Mēs varam norādīt vienu vai divas dienas kā nedēļas brīvdienu.

Funkcijas NETWORKDAYS.INTL sintakse

NETWORKDAYS.INTL (sākuma datums, beigu datums, [nedēļas nogale], [brīvdienas])

Nedēļas nogales parametrā mēs varam norādīt nedēļas brīvdienas.

Šajā piemērā mēs izmantosim visas iepriekš minētās trīs funkcijas, lai skaitītu darba dienu skaitu.

Loģisks skaidrojums

Funkcijā “CountWorkingDays” vispirms pārbaudām, vai norādītais datums parametrā pastāv norādītajā brīvdienu sarakstā. Ja brīvdienu sarakstā ir norādīts datums, tad šī diena netiek ieskaitīta darba dienu skaitā. Ja brīvdienu sarakstā datuma nav, pārbaudiet, vai datums ir sestdiena vai svētdiena. Pamatojoties uz sniegto ievades parametru, pārbaudiet, vai iekļaut vai izslēgt sestdienas vai svētdienas kā brīvdienas.

Koda skaidrojums

Iestatīt RngFind = Darblapas ("Brīvdienas"). Kolonnas (1). Atrast (i)

Iepriekš minētais kods tiek izmantots, lai atrastu vietu, kur brīvdienu sarakstā ir norādītais datums.

Ja nē, tad RngFind nav nekas

GoTo ForLast

Beigas Ja

Iepriekš minētais kods tiek izmantots, lai pārbaudītu, vai brīvdienu sarakstā ir norādīts datums. Ja nosacījums atgriež patiesu, šī diena netiek ieskaitīta darba dienu skaitā.

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

 Opcija Skaidrs Funkciju skaits Atrašanās vietas atrašana, kur norādītais datums pastāv brīvdienu lapā Set RngFind = Worksheets ("Holidays"). Kolonnas (1). Atrast (i) On Error GoTo 0 'Pārbaudot, vai noteiktā datumā ir brīvdiena Ja nē RngFind Is Nothing Pēc tam pārejiet uz pēdējo beigu laiku, ja tiek pārbaudīts, vai noteiktā datumā ir sestdiena. Ja ieskaitot sestdienas, tad ja nedēļas diena (i, 2) = 6, tad pārejiet uz pēdējo beigu ja beigu ja, ja tiek pārbaudīts, vai noteiktā datumā ir svētdiena. 2) = 7 Tad GoTo ForLast End If End Ja CountWorkingDays = CountWorkingDays + 1 ForLast: Nākamā beigu funkcija 

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ē