Έλεγχος αν είναι αργία την καθορισμένη ημερομηνία χρησιμοποιώντας VBA στο Microsoft Excel

Anonim

Σε αυτό το άρθρο, θα δημιουργήσουμε μια συνάρτηση καθορισμένη από το χρήστη (UDF) για να ελέγξουμε εάν είναι αργία την καθορισμένη ημερομηνία, συμπεριλαμβανομένων ή εξαιρουμένων των Σαββάτων και των Κυριακών ως αργίες εβδομάδας.

Τα ακατέργαστα δεδομένα για αυτό το δείγμα αποτελούνται από ημερομηνίες με τη σειρά στη στήλη Α. Θα βρούμε αν είναι αργία τη δεδομένη ημερομηνία, συμπεριλαμβανομένης ή εξαιρουμένης της εβδομάδας αργίας το Σάββατο ή την Κυριακή.

Έχουμε καθορίσει τις ημερομηνίες των διακοπών στη στήλη Α στο φύλλο "Διακοπές".

Δημιουργήσαμε την προσαρμοσμένη λειτουργία "IsHoliday" για να βρούμε την κατάσταση των διακοπών τη δεδομένη ημερομηνία.

Σύνταξη λειτουργίας

IsHoliday (Ημερομηνία, Συμπεριλαμβάνεται Σάββατο, Συμπεριλαμβάνεται Κυριακή)

Τα InclSat Saturdays και InclSundays είναι προαιρετικές παράμετροι. Από προεπιλογή, και οι δύο έχουν TRUE τιμή. Για να αλλάξετε το Σάββατο και την Κυριακή σε εργάσιμες ημέρες, αλλάξτε την τιμή της αντίστοιχης παραμέτρου σε FALSE.

Χρησιμοποιήσαμε τον παρακάτω τύπο στο κελί C9 για να βρούμε την κατάσταση αργίας για ημερομηνία στο κελί A9 θεωρώντας το Σάββατο ως εργάσιμη ημέρα.

= IsHoliday (A9, FALSE)

Χρησιμοποιήσαμε τον παρακάτω τύπο στο κελί D9 για να βρούμε την κατάσταση αργίας για ημερομηνία στο κελί A9 θεωρώντας τα Σάββατα και τις Κυριακές ως εργάσιμες ημέρες.

= IsHoliday (A9, FALSE, FALSE)

Χρησιμοποιήσαμε τον παρακάτω τύπο στο κελί Ε9 για να βρούμε την κατάσταση των διακοπών για την ημερομηνία στο κελί Α9 θεωρώντας τα Σάββατα και τις Κυριακές ως εκτός εβδομάδας.

= IsHoliday (A9)

Λογική εξήγηση

Στη συνάρτηση "IsHoliday", πρώτα ελέγχουμε αν υπάρχει συγκεκριμένη ημερομηνία στην παράμετρο στην καθορισμένη λίστα διακοπών. Εάν υπάρχει ημερομηνία στη λίστα διακοπών, τότε επιστρέψτε το "Holiday" ως έξοδο. Εάν η ημερομηνία δεν υπάρχει στη λίστα των διακοπών, ελέγξτε αν η συγκεκριμένη ημερομηνία είναι Σάββατο ή Κυριακή. Με βάση την παρεχόμενη παράμετρο εισαγωγής, ελέγξτε αν θα συμπεριλάβετε ή θα εξαιρέσετε το Σάββατο ή την Κυριακή ως αργίες.

Επεξήγηση κώδικα

Ορισμός RngFind = Φύλλα εργασίας ("Διακοπές"). Στήλες (1). Εύρεση (LngDate)

Ο παραπάνω κωδικός χρησιμοποιείται για να βρείτε την τοποθεσία όπου υπάρχει η καθορισμένη ημερομηνία στη λίστα διακοπών.

Αν όχι RngFind δεν είναι τίποτα τότε

ΟΚ = "Διακοπές"

GoTo Last

Τέλος εαν

Ο παραπάνω κωδικός χρησιμοποιείται για να ελέγξει εάν υπάρχει καθορισμένη ημερομηνία στη λίστα διακοπών. Εάν η κατάσταση επιστρέψει TRUE, τότε η προσαρμοσμένη συνάρτηση επιστρέφει "Holiday" ως έξοδο και ο έλεγχος μετατοπίζεται στην τελευταία γραμμή του UDF.

Ακολουθήστε παρακάτω για τον κωδικό

 Option Explicit Function IsHoliday (LngDate As Date, Optional InclSat Saturdays Boolean = True, _ Optional InclSundays As Boolean = True) 'Δήλωση μεταβλητών Dim RngFind As Range Dim OK As String' Initializing the variable OK = "Working day" On Error Resume Next ' Εύρεση της τοποθεσίας όπου υπάρχει η καθορισμένη ημερομηνία στο φύλλο Διακοπών Σετ RngFind = Φύλλα εργασίας ("Διακοπές"). Στήλες (1). Εύρεση (LngDate) On Error GoTo 0 'Έλεγχος αν είναι αργία τη δεδομένη ημερομηνία Εάν όχι RngFind Is Nothing Τότε OK = "Διακοπές" GoTo Last End If "Έλεγχος αν είναι Σάββατο σε δεδομένη ημερομηνία If InclSat Saturdays Then If Weekday (LngDate, 2) = 6 Then OK =" Holiday "GoTo Last End If End If (Έλεγχος αν είναι Κυριακή στις δεδομένη ημερομηνία Αν InclSundays Στη συνέχεια If Weekday (LngDate, 2) = 7 Τότε OK = "Holiday" End If End If Last: IsHoliday = OK End End 

Αν σας άρεσε αυτό το blog, μοιραστείτε το με τους φίλους σας στο Facebook. Επίσης, μπορείτε να μας ακολουθήσετε στο Twitter και το Facebook.

Θα θέλαμε πολύ να σας ακούσουμε, ενημερώστε μας πώς μπορούμε να βελτιώσουμε το έργο μας και να το κάνουμε καλύτερο για εσάς. Γράψτε μας στον ιστότοπο email