In questo articolo, creeremo una funzione definita dall’utente (UDF) per verificare se è un giorno festivo nella data specificata, includendo o escludendo sabato e domenica come ferie settimanali.

I dati grezzi per questo campione sono costituiti da date in sequenza nella colonna A. Scopriremo se è festivo nella data specificata, includendo o escludendo la settimana di riposo di sabato o domenica.

ArrowRawData

Abbiamo specificato le date delle festività nella colonna A del foglio “Festività”.

ArrowHolidayList

Abbiamo creato la funzione personalizzata “IsHoliday” per trovare lo stato della vacanza alla data specificata.

Sintassi della funzione

IsHoliday (Date, InclSaturdays, InclSundays)

InclSaturdays e InclSundays sono parametri opzionali. Per impostazione predefinita, entrambi hanno il valore TRUE. Per modificare il sabato e la domenica in giorni lavorativi, modificare il valore del rispettivo parametro in FALSE.

ArrowOutput

Abbiamo utilizzato la formula seguente nella cella C9 per trovare lo stato delle festività per la data nella cella A9 considerando il sabato come giorno lavorativo.

IsHoliday (A9, FALSE)

Abbiamo utilizzato la formula seguente nella cella D9 per trovare lo stato delle festività per la data nella cella A9 considerando il sabato e la domenica come giorni lavorativi.

IsHoliday (A9, FALSE, FALSE)

Abbiamo utilizzato la seguente formula nella cella E9 per trovare lo stato delle festività per la data nella cella A9 considerando il sabato e la domenica come ferie settimanali.

IsHoliday (A9)

Spiegazione logica

Nella funzione “IsHoliday”, per prima cosa controlliamo se la data specificata nel parametro esiste nell’elenco delle festività specificato. Se la data esiste nell’elenco delle festività, restituire “Festività” come output. Se la data non esiste nell’elenco delle festività, controlla se la data specificata è un sabato o una domenica. In base al parametro di input fornito, verificare se includere o escludere un sabato o una domenica come festivi.

Spiegazione del codice

Set RngFind = Worksheets (“Holidays”). Columns (1) .Find (LngDate)

Il codice sopra viene utilizzato per trovare la posizione in cui è presente la data specificata nell’elenco delle festività.

If Not RngFind Is Nothing Then OK = “Holiday”

Il codice GoTo Last End If Above viene utilizzato per verificare se la data specificata esiste nell’elenco delle festività. Se la condizione restituisce TRUE, la funzione personalizzata restituisce “Holiday” come output e il controllo si sposta sull’ultima riga dell’UDF.

Segui sotto per il codice

Option Explicit

Function IsHoliday(LngDate As Date, Optional InclSaturdays As Boolean = True, _

Optional InclSundays As Boolean = True)

'Declaring variables

Dim RngFind As Range

Dim OK As String

'Initializing the variable

OK = "Working day"

On Error Resume Next

'Finding the location where the specified date exist in the Holidays sheet

Set RngFind = Worksheets("Holidays").Columns(1).Find(LngDate)

On Error GoTo 0

'Checking whether it is holiday on the given date

If Not RngFind Is Nothing Then

OK = "Holiday"

GoTo Last

End If

'Checking whether it is Saturday on given date

If InclSaturdays Then

If Weekday(LngDate, 2) = 6 Then

OK = "Holiday"

GoTo Last

End If

End If

'Checking whether it is Sunday on given date

If InclSundays Then

If Weekday(LngDate, 2) = 7 Then

OK = "Holiday"

End If

End If

Last:

IsHoliday = OK

End Function

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]