Συμβολοσειρά VBA έως σήμερα - Μετατροπή τιμών συμβολοσειράς σε ημερομηνία στο Excel VBA

Πίνακας περιεχομένων

Συμβολοσειρά Excel VBA έως σήμερα

Στο Vba υπάρχει μια μέθοδος μέσω της οποίας μπορούμε να μετατρέψουμε μια δεδομένη συμβολοσειρά σε μια ημερομηνία και η μέθοδος είναι γνωστή ως συνάρτηση CDATE στο vba, αυτή είναι μια ενσωματωμένη συνάρτηση στο VBA και τα μέρη που απαιτούνται για αυτήν τη συνάρτηση είναι να μετατρέψουν πρώτα τη συμβολοσειρά σε έναν αριθμό και μετά μετατρέπουμε τον δεδομένο αριθμό σε ημερομηνία. Η μορφή αποτελέσματος εξαρτάται μόνο από τη μορφή ημερομηνίας συστήματος.

Ένα από τα συνηθισμένα προβλήματα που αντιμετωπίζουμε όλοι με το excel είναι το "Date & Time" και συχνά αποθηκεύονται ως τιμές κειμένου και αρχικά απαρατήρητα. Αλλά όταν απαιτείται να χρησιμοποιήσουν αυτόν τον χρόνο, θα μάθουμε ότι αυτές οι τιμές αποθηκεύονται ως κείμενο και δεν γνωρίζουμε πώς να τις αντιμετωπίσουμε καθόλου. Η «Ημερομηνία & Ώρα» είναι δύο συνδυασμένα πράγματα σε ένα στοιχείο, αλλά όταν αυτές οι τιμές αποθηκεύονται ως τιμές κειμένου, είναι δύσκολο να δουλέψετε.

Πώς να μετατρέψετε τις τιμές συμβολοσειράς σε ημερομηνία;

Παράδειγμα # 1

Μόλις η μεταβλητή VBA δηλωθεί και εκχωρηθεί ως συμβολοσειρά, οτιδήποτε εκχωρηθεί σε αυτήν τη μεταβλητή θα αντιμετωπίζεται ως συμβολοσειρά μόνο. Για παράδειγμα, δείτε τον παρακάτω κώδικα.

Κώδικας:

Sub String_To_Date () Dim k As String k = "10-21" MsgBox k End Sub

Στον παραπάνω κώδικα, η μεταβλητή "k" ορίζεται ως ο τύπος δεδομένων "String" και για αυτήν τη μεταβλητή, έχουμε ορίσει την τιμή ως "10-21".

Εντάξει, ας τρέξουμε τον κώδικα και να δούμε τι λαμβάνουμε στο πλαίσιο μηνυμάτων στο VBA.

Έχουμε την τιμή ως 10-21 μόνο, αλλά συνήθως, αυτές οι τιμές είναι ημερομηνία, όχι τιμές συμβολοσειράς. Έτσι, παρόλο που ο τύπος δεδομένων που έχει οριστεί είναι "String", μπορούμε ακόμα να μετατρέψουμε μέχρι σήμερα χρησιμοποιώντας τη λειτουργία μετατροπής τύπου δεδομένων CDATE VBA.

Κώδικας:

Sub String_To_Date () Dim k As String k = "10-21" MsgBox CDate (k) End Sub

Στα παραπάνω, προτού δείξουμε το αποτέλεσμα της μεταβλητής "k" στο πλαίσιο μηνύματος, έχουμε εκχωρήσει τη συνάρτηση CDATE. Γίνεται μια μικρή προσαρμογή, ας δούμε πόσο μεγάλη επίδραση έχει.

Τώρα θα δούμε το αποτέλεσμα ως "Ημερομηνία" όχι πλέον ως τιμή "Συμβολοσειρά".

Παράδειγμα # 2

Τώρα, ρίξτε μια ματιά στον παρακάτω κώδικα για ένα παράδειγμα.

Κώδικας:

Sub String_To_Date () Dim k As String k = 43599 MsgBox k End Sub

Σε αυτό το χρονικό σημείο, ο παραπάνω κώδικας θα έδειχνε το αποτέλεσμα ως "43599", όπως αναφέραμε παραπάνω.

Αλλά μόλις χρησιμοποιήσουμε τη συνάρτηση CDATE, θα μετατραπεί σε τιμή ημερομηνίας.

Κώδικας:

Sub String_To_Date () Dim k As String k = 43599 MsgBox CDate (k) End Sub

Το αποτέλεσμα μετά την εφαρμογή της λειτουργίας CDATE έχει ως εξής.

Δεδομένου ότι το excel αποθηκεύει την ημερομηνία ως σειριακούς αριθμούς, ο εκχωρημένος σειριακός αριθμός 43599 ισούται με την ημερομηνία 05/14/2019 όταν εφαρμόζεται η μορφή ημερομηνίας.

Μπορούμε επίσης να εφαρμόσουμε τη μορφή στην ημερομηνία ως "DD-MMM-YYYY" για να διαβάσουμε την ημερομηνία με ακρίβεια.

Κώδικας:

Sub String_To_Date1 () Dim k As String Dim DateValue As Date k = 43599 DateValue = CDate (k) Μορφή MsgBox (DateValue, "DD-MMM-YYYY") End Sub

Στα παραπάνω, έχω δηλώσει μια επιπλέον μεταβλητή για την αποθήκευση του αποτελέσματος. Για αυτήν τη μεταβλητή, έχω εφαρμόσει τη λειτουργία μετατροπής CDATE.

Στη συνέχεια, έχω χρησιμοποιήσει τη συνάρτηση FORMAT για να εφαρμόσω τη μορφή της μορφής "DD-MMM-YYYY" και το αποτέλεσμα θα είναι όπως φαίνεται παρακάτω.

Με αυτό, μπορούμε να διαβάσουμε με σαφήνεια το τμήμα της ημέρας και το μήνα. Εξαρτάται επίσης από τη μορφή ημερομηνίας του συστήματός σας στο excel. Δεδομένου ότι η μορφή ημερομηνίας του συστήματός μου ήταν "MM-DD-YYYY", έδειχνε έτσι, αλλά αυτό δεν πρέπει να αποτελεί εμπόδιο στη μορφοποίηση.

Παράδειγμα # 3

Τώρα θα δούμε πραγματικά πώς μορφοποιούνται οι ημερομηνίες ως τιμές κειμένου σε κελιά φύλλου εργασίας. Ακολουθεί η εικόνα των ημερομηνιών που αποθηκεύονται ως κείμενο σε ένα φύλλο εργασίας.

Στη στήλη Α από A2 έως A12, έχουμε τιμές αναζήτησης ημερομηνίας, αλλά όταν κοιτάζουμε την καρτέλα μορφή, δείχνει τη μορφή "Κείμενο". Τώρα πρέπει να μετατρέψουμε αυτές τις τιμές από κείμενο σε ημερομηνία.

Παρακάτω είναι ο κωδικός που έχω γράψει για να μετατρέψω τις τιμές ημερομηνίας σε μορφή κειμένου σε πραγματικές ημερομηνίες.

Κώδικας:

Sub String_To_Date2 () Dim k As Long 'Τα δεδομένα βρίσκονται σε περισσότερα από ένα κελιά, οπότε πρέπει να κάνετε βρόχο σε κάθε κελί' Open For Loop For k = 2 to 12 'Τα δεδομένα ξεκινούν από τη 2η σειρά και τελειώνουν στη 12η σειρά, έτσι 2 έως 12 Κελιά (k, 2). Value = CDate (Cells (k, 1). Value) Next k End Sub

Εάν εκτελέσετε τον κωδικό, θα μας δώσει το παρακάτω αποτέλεσμα.

Πράγματα που πρέπει να θυμάστε

  • Το CDATE είναι μια λειτουργία μετατροπής τύπου δεδομένων, αλλά μπορεί να χρησιμοποιηθεί για να μετατρέψει την ημερομηνία αποθήκευσης συμβολοσειράς VBA σε πραγματικές τιμές ημερομηνίας.
  • Το αποτέλεσμα της μορφής λειτουργίας CDATE εξαρτάται μόνο από τη μορφή ημερομηνίας συστήματος.
  • Οι ημερομηνίες αποθηκεύονται ως σειριακοί αριθμοί στο excel, επομένως απαιτείται μορφοποίηση για να εμφανίζονται ως ημερομηνίες

ενδιαφέροντα άρθρα...