Πώς να μετατρέψετε συμβολοσειρά σε αριθμό στο Excel VBA (3 μέθοδοι)

  • Μοιραστείτε Αυτό
Hugh West

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

Κατεβάστε το βιβλίο ασκήσεων

Κατεβάστε αυτό το τετράδιο ασκήσεων για να εξασκηθείτε ενώ διαβάζετε αυτό το άρθρο.

Μετατροπή Συμβολοσειράς σε Number.xlsm

3 τρόποι μετατροπής συμβολοσειράς σε αριθμό στο 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. Ελπίζουμε ότι θα σας ενθαρρύνει να χρησιμοποιήσετε αυτή τη λειτουργία με μεγαλύτερη αυτοπεποίθηση. Τυχόν ερωτήσεις ή προτάσεις μην ξεχάσετε να τις βάλετε στο πλαίσιο σχολίων παρακάτω.

Ο Hugh West είναι ένας εξαιρετικά έμπειρος εκπαιδευτής και αναλυτής του Excel με πάνω από 10 χρόνια εμπειρίας στον κλάδο. Είναι κάτοχος πτυχίου Λογιστικής και Χρηματοοικονομικής και μεταπτυχιακού στη Διοίκηση Επιχειρήσεων. Ο Hugh έχει πάθος για τη διδασκαλία και έχει αναπτύξει μια μοναδική προσέγγιση διδασκαλίας που είναι εύκολο να ακολουθηθεί και να κατανοηθεί. Οι εξειδικευμένες γνώσεις του στο Excel έχουν βοηθήσει χιλιάδες φοιτητές και επαγγελματίες παγκοσμίως να βελτιώσουν τις δεξιότητές τους και να διαπρέψουν στην καριέρα τους. Μέσω του ιστολογίου του, ο Hugh μοιράζεται τις γνώσεις του με τον κόσμο, προσφέροντας δωρεάν μαθήματα Excel και διαδικτυακή εκπαίδευση για να βοηθήσει άτομα και επιχειρήσεις να αξιοποιήσουν πλήρως τις δυνατότητές τους.