Πίνακας περιεχομένων
Σε αυτό το άρθρο, θα συζητήσουμε διάφορες μεθόδους για τη μετατροπή συμβολοσειράς σε αριθμό στο Excel VBA. Θα δούμε πώς μπορείτε να χρησιμοποιήσετε τις ενσωματωμένες συναρτήσεις και να δημιουργήσετε μια προσαρμοσμένη συνάρτηση με τη χρήση τους για τη μετατροπή συμβολοσειράς σε αριθμό με παραδείγματα κώδικα VBA.
Κατεβάστε το βιβλίο ασκήσεων
Κατεβάστε αυτό το τετράδιο ασκήσεων για να εξασκηθείτε ενώ διαβάζετε αυτό το άρθρο.
Μετατροπή Συμβολοσειράς σε Number.xlsm3 τρόποι μετατροπής συμβολοσειράς σε αριθμό στο Excel VBA
1. Μετατροπή συμβολοσειράς σε αριθμό χρησιμοποιώντας συναρτήσεις μετατροπής τύπου
Το Excel παρέχει διάφορα ενσωματωμένα συναρτήσεις μετατροπής τύπου Μπορούμε να τα χρησιμοποιήσουμε στον κώδικα VBA για να μετατρέψουμε εύκολα από τύπο δεδομένων συμβολοσειράς σε διαφορετικούς τύπους δεδομένων.
1.1 Συμβολοσειρά σε Ακέραιο
Για να μετατρέψετε string στο integer , μπορούμε να χρησιμοποιήσουμε το Συνάρτηση CInt στον κώδικά μας. Συνάρτηση CInt παίρνει μόνο ένα επιχείρημα και αυτό θα πρέπει να είναι ένα αριθμητική τιμή Ας δοκιμάσουμε τον ακόλουθο κώδικα στον Visual Code Editor.
Sub StringToNumber() MsgBox CInt(12.3) End Sub
Τύπος F5 στο τρέχει το κωδικός Η έξοδος εμφανίζεται στο MsgBox .
Η συνάρτηση CInt μετατραπεί το αριθμητική συμβολοσειρά αξία ("12.3" ) σε ένα integer 12.
Για να καταλάβετε περισσότερα για το Συνάρτηση CInt , εκτελέστε τον ακόλουθο κώδικα στον επεξεργαστή κώδικα και παρατηρήστε το το αποτελέσματα .
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CInt(Cells(i, 2)) Next End Sub
Το έξοδος είναι εδώ στα ακόλουθα στιγμιότυπο οθόνης .
Επεξήγηση κωδικού
Σε αυτόν τον κώδικα, χρησιμοποιήσαμε το For...Επόμενος βρόχος για να εφαρμόσετε το Συνάρτηση CInt στις σειρές των κυττάρων B3:B7. Το έξοδοι εκτυπώνονται στα κελιά C3:C7. Χρησιμοποιήσαμε το Λειτουργία των κυττάρων για να καθορίσετε τις τιμές εισόδου και πού θα εκτυπωθούν οι τιμές εξόδου.
Αποτελέσματα
Η συνάρτηση CInt μετατρέπεται σε 25.5 στο επόμενος ακέραιος αριθμός 26 Από την άλλη πλευρά, είναι μετατρέπεται σε 10.3 στο 10, όχι 11 Όταν μια δεκαδική αριθμητική τιμή είναι μικρότερη από 0,5, η συνάρτηση στρογγυλοποιεί προς τα κάτω στον ίδιο αριθμό. Αλλά η δεκαδικό αριθμητική τιμή συμβολοσειράς μετατρέπεται σε επόμενος ακέραιος αριθμός αριθμός αν είναι ίση με ή μεγαλύτερο από 0,5.
Σημείωση
Η ακέραια τιμή έχει εύρος μεταξύ -32,768 στο 32,767 Αν βάλουμε μια αριθμητική τιμή που είναι εκτός αυτού του εύρους , το Excel θα εμφανίσει ένα σφάλμα .
1.2 Συμβολοσειρά σε Long
Το Λειτουργία CLng μετατρέπει μια αριθμητική τιμή συμβολοσειράς σε τύπος δεδομένων long Λειτουργεί παρόμοια με τη συνάρτηση CInt. Η βασική διαφορά έγκειται στην εύρος η οποία βρίσκεται μεταξύ -2,147,483,648 και 2,147,483,647.
Ο κώδικας για την εκτέλεση είναι εδώ παρακάτω: Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub
Εδώ, τα κύτταρα B3:B9 περιέχουν κάποια αριθμητική τιμή συμβολοσειράς , και μετατραπεί l ong αριθμούς βρίσκονται σε κελιά C3:C9. Το Λειτουργία CLng μετατραπεί -32800 και 32800 με επιτυχία σε μεγάλοι αριθμοί το οποίο το Συνάρτηση CInt δεν θα μπορούσε. Αλλά θα πάρει επίσης ένα σφάλμα εάν η είσοδος αριθμητική τιμή είναι εκτός εμβέλειας.
1.3 Συμβολοσειρά σε δεκαδικό
Χρησιμοποιώντας το Λειτουργία CDec μπορούμε μετατροπή a αριθμητική τιμή συμβολοσειράς σε ένα δεκαδικός τύπος δεδομένων. Run τον ακόλουθο κώδικα στο μετατροπή το αριθμητικές τιμές σε κύτταρα B3:B7 στο δεκαδικός τύπος δεδομένων.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CDec(Cells(i, 2)) Next End Sub
1.4 Συμβολοσειρά σε Μονό
Σε αυτό το παράδειγμα, θα μετατρέψουμε τις συμβολοσειρές εισόδου σε single datatype (αριθμοί κινητής υποδιαστολής μονής ακρίβειας). Για το σκοπό αυτό, πρέπει να χρησιμοποιήσουμε την εντολή Λειτουργία CSng .
Ο μοναδικός τύπος δεδομένων κυμαίνεται- (i) -3,402823E38 στο -1.401298E-45 για το αρνητικό αριθμούς.
(ii) 1.401298E-45 στο 3.402823E38 για το θετικό αριθμούς.
Εκτελέστε τον ακόλουθο κώδικα στον επεξεργαστή visual basic.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub
Στην έξοδο, τα κελιά B3:B9 περιέχουν κάποια αριθμητική τιμή συμβολοσειράς, και μετατρεπόμενοι αριθμοί ενιαίου τύπου δεδομένων βρίσκονται σε κελιά C3:C9. Αλλά θα πάρει επίσης ένα σφάλμα εάν η είσοδος αριθμητική τιμή είναι εκτός εμβέλειας.
1.5 Συμβολοσειρά σε Διπλό
Σε αυτό το παράδειγμα, θα μετατρέψουμε τις συμβολοσειρές εισόδου σε τύπος δεδομένων double (αριθμοί κινητής υποδιαστολής διπλής ακρίβειας). Για το σκοπό αυτό, πρέπει να χρησιμοποιήσουμε την εντολή Λειτουργία CDbl .
Ο τύπος δεδομένων double κυμαίνεται- (i) -1,79769313486231E308 στο -4.94065645841247E-324 για το αρνητικό αριθμούς.
(ii) 4.94065645841247E-324 στο 1.79769313486232E308 για το θετικό αριθμούς.
Εκτελέστε τον ακόλουθο κώδικα στον επεξεργαστή visual basic.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub
Στην έξοδο, τα κελιά B3:B9 περιέχουν κάποια αριθμητική τιμή συμβολοσειράς και μετατρεπόμενοι αριθμοί τύπου double datatype βρίσκονται σε κελιά C3:C9. Αλλά θα πάρει επίσης ένα σφάλμα εάν η είσοδος αριθμητική τιμή είναι εκτός εμβέλειας.
1.6 Συμβολοσειρά σε Νόμισμα
Το τύπος δεδομένων νομίσματος είναι χρήσιμο όταν οι υπολογισμοί σχετίζονται με χρήματα Επιπλέον, αν θέλουμε μεγαλύτερη ακρίβεια στην σταθερό - σημείο υπολογισμός , η χρήση του τύπου δεδομένων currency είναι μια καλή επιλογή. Πρέπει να χρησιμοποιήσουμε το Λειτουργία CCur για να μετατρέψετε μια συμβολοσειρά σε τύπος δεδομένων νομίσματος Ο τύπος δεδομένων σειρές από το -922,337,203,685,477.5808 στο 922,337,203,685,477.5808.
Κώδικας προς μετατροπή αριθμητική τιμή συμβολοσειράς των κυττάρων B3:B7 στο τύπος δεδομένων νομίσματος σε κύτταρα C3:C7 είναι εδώ παρακάτω.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CCur(Cells(i, 2)) Next End Sub
1.7 Μετατροπή Συμβολοσειράς σε Byte
Το Λειτουργία CByte μετατρέπει τις αριθμητικές τιμές συμβολοσειράς στο τύπος δεδομένων byte η οποία κυμαίνεται από 0 έως 255.
Κωδικός έχει ως εξής :
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CByte(Cells(i, 2)) Next End Sub
Στην έξοδο, τα κελιά B3:B9 περιέχουν κάποια αριθμητική τιμή συμβολοσειράς, και μετατρεπόμενοι αριθμοί δεδομένων τύπου byte βρίσκονται σε κελιά C3:C9. Αλλά θα πάρει επίσης ένα σφάλμα εάν η είσοδος αριθμητική τιμή είναι εκτός εμβέλειας.
Διαβάστε περισσότερα: Πώς να μετατρέψετε συμβολοσειρά σε Long χρησιμοποιώντας την VBA στο Excel
Παρόμοιες αναγνώσεις
- Μετατροπή συμβολοσειράς σε διπλό στο Excel VBA (5 μέθοδοι)
- Πώς να μετατρέψετε κείμενο σε αριθμό με το Excel VBA (3 παραδείγματα με μακροεντολές)
- Διορθώστε το σφάλμα μετατροπής σε αριθμό στο Excel (6 μέθοδοι)
- Πώς να μετατρέψετε την επιστημονική σημειογραφία σε αριθμό στο Excel (7 μέθοδοι)
2. Χρήση προσαρμοσμένης συνάρτησης VBA για τον έλεγχο και τη μετατροπή συμβολοσειράς σε αριθμό στο Excel
Σε αυτή την εικόνα, θα κάνουμε ένα προσαρμοσμένη λειτουργία για τη μετατροπή συμβολοσειρών σε αριθμούς. Στη συνέχεια μπορούμε να χρήση αυτό το προσαρμοσμένη λειτουργία στο φύλλο εργασίας σαν ενσωματωμένη λειτουργία Σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε το Συνάρτηση CInt στο μετατροπή συμβολοσειρές σε ακέραιοι αριθμοί κατά τη δημιουργία του προσαρμοσμένη λειτουργία. Θα μπορούσαμε επίσης να χρησιμοποιήσουμε όλα τα άλλες λειτουργίες που περιγράφεται στο μέθοδος 1 για να μετατρέψετε χορδές στο διαφορετικοί τύποι δεδομένων . Τώρα, ακολουθήστε τα παρακάτω βήματα για να το πετύχετε αυτό.
Βήματα:
- Εδώ, στα κύτταρα B3:B7, έχουμε κάποιες αριθμητικές τιμές συμβολοσειράς.
- Τώρα, στον επεξεργαστή visual basic, αντίγραφο και επικόλληση τον ακόλουθο κώδικα και στη συνέχεια πατήστε Ctrl + S στο save
Function StringToNumber(inputStr) Dim convertedNum As Variant If IsNumeric(inputStr) Then If IsEmpty(inputStr) Then convertedNum = "-" Else convertedNum = CInt(inputStr) End If Else convertedNum = "-" End If StringToNumber = convertedNum End Function
- Στο κελί C3 , αρχίστε να πληκτρολογείτε το όνομα συνάρτησης ( StringToNumber ). Το Excel θα προτείνει αυτόματα το συνάρτηση για χρήση. Τύπος το Πλήκτρο Tab για να εισέλθετε στη λειτουργία.
- Βάλτε το αναφορά κελιού B3 ως το μοναδικό επιχείρημα.
- Τώρα, πατήστε Εισάγετε το μετά το κλείσιμο των παρενθέσεων.
- Εντοπίστε το Χειρολαβή πλήρωσης στο κάτω δεξιά γωνία του κυττάρου C3 στο εφαρμογή η λειτουργία σε κύτταρα C4:C7.
- Η τελική έξοδος είναι οι πολυπόθητοι ακέραιοι αριθμοί από τις τιμές των συμβολοσειρών.
3. Κώδικας VBA για τη μετατροπή μιας επιλεγμένης σειράς κελιών σε αριθμούς στο Excel
Σε αυτή την εικόνα, θα μετατρέψουμε ένα εύρος του επιλεγμένα κύτταρα που περιέχει τιμές συμβολοσειράς σε ακέραιους αριθμούς. Αν κάποιο κελί περιέχει ένα μη αριθμητικά τιμή σε αυτό, η έξοδος θα είναι ένα γραμμή παύλα (-) αντί . Ακολουθήστε το βήματα :
- Επιλογή κελιών B3:B6 έχοντας αριθμητικές συμβολοσειρές τιμές και B7 το οποίο περιέχει ένα μη αριθμητικά
- Στο Visual Basic Editor αντίγραφο και επικόλληση τα ακόλουθα κωδικός .
Sub StringToNumber() Dim convertedNum As Variant For Each cell In Selection If IsNumeric(cell) Then If IsEmpty(cell) Then convertedNum = "-" Else convertedNum = CInt(cell) End If Else convertedNum = "-" End If With cell .Value = convertedNum.HorizontalAlignment = xlCenter End With Next cell End Sub
- Τώρα, πατήστε F5 στο τρέχει το έξοδος όπως φαίνεται στα ακόλουθα στιγμιότυπο οθόνης .
Σημειώσεις
- Χρησιμοποιήσαμε το συνάρτηση isNumeric στο 2η και 3η μέθοδοι στον κώδικα VBA που ελέγχει αν μια έκφραση μπορεί να μετατραπεί σε αριθμό.
- Στο μέθοδος 1 , χρησιμοποιήσαμε ενσωματωμένες συναρτήσεις (CInt, CDbl, CSng.....) για να μετατροπή αριθμητικών τιμών συμβολοσειράς στο αριθμοί . Αλλά αν υπάρχει μια μη αριθμητική τιμή , θα εμφανιστεί ένα σφάλμα αναντιστοιχίας .
Συμπέρασμα
Τώρα, ξέρουμε πώς να μετατρέπουμε τιμές συμβολοσειράς σε αριθμούς στο Excel. Ελπίζουμε ότι θα σας ενθαρρύνει να χρησιμοποιήσετε αυτή τη λειτουργία με μεγαλύτερη αυτοπεποίθηση. Τυχόν ερωτήσεις ή προτάσεις μην ξεχάσετε να τις βάλετε στο πλαίσιο σχολίων παρακάτω.