Verificare se si tratta di vacanze alla data specificata utilizzando VBA in Microsoft Excel
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.
Abbiamo specificato le date delle festività nella colonna A del foglio “Festività”.
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.
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]