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

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

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

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

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

Μπορείτε να πραγματοποιήσετε λήψη αυτού του προτύπου συμβολοσειράς VBA στο Date Excel - VBA String to Date Excel Template

Παράδειγμα # 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

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

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

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

Κώδικας:

 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, επομένως απαιτείται μορφοποίηση για να εμφανίζονται ως ημερομηνίες.