Jak przekonwertować ciąg na liczbę w Excelu VBA (3 metody)

  • Udostępnij To
Hugh West

W tym artykule omówimy kilka metod konwersji ciągu na liczbę w Excelu VBA. Zobaczymy, jak używać wbudowanych funkcji i tworzyć niestandardową funkcję za ich pomocą, aby przekonwertować ciąg na liczbę z przykładami kodu VBA.

Pobierz Zeszyt ćwiczeń

Pobierz ten zeszyt ćwiczeń, aby ćwiczyć podczas czytania tego artykułu.

Convert String to Number.xlsm

3 Sposoby konwersji ciągu na liczbę w Excelu VBA

1. Konwersja łańcucha na liczbę przy użyciu funkcji konwersji typu

Excel oferuje kilka wbudowanych funkcje konwersji typów Możemy je wykorzystać w naszym kodzie VBA do łatwej konwersji z typu danych string do różnych typów danych.

1.1 String to Integer

Do konwersji ciąg do liczba całkowita , możemy użyć Funkcja CInt w naszym kodzie. Funkcja CInt trwa tylko jeden argument i to powinno być wartość numeryczna Wypróbujmy następujący kod w edytorze Visual Code.

 Sub StringToNumber() MsgBox CInt(12,3) End Sub 

Naciśnij F5 do uruchomić the kod Dane wyjściowe są pokazane w MsgBox .

Funkcja CInt przekształcona the ciąg liczbowy wartość ("12.3" ) do liczba całkowita 12.

Aby zrozumieć więcej o Funkcja CInt , uruchomić następujący kod w edytorze kodu i obserwować the wyniki .

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CInt(Cells(i, 2)) Next End Sub 

Na stronie wyjście jest tutaj w zrzut ekranu .

Kod Objaśnienie

W tym kodzie użyliśmy Dla...Następna pętla stosować Funkcja CInt na struny komórek B3:B7. Na stronie wyjścia są drukowane w komórkach C3:C7. Użyliśmy Funkcja komórek aby określić wartości wejściowe i gdzie wydrukować wartości wyjściowe.

Wyniki

Funkcja CInt przeliczone 25,5 do następna liczba całkowita 26 Z drugiej strony, to przeliczone 10.3 do 10, nie 11 Gdy dziesiętna wartość liczbowa jest mniejsza niż .5, funkcja zaokrągla w dół do tej samej liczby.Ale decimal numeryczna wartość łańcuchowa zamienia się w kolejna liczba całkowita numer, jeśli jest równy lub większe niż .5.

Uwaga

Wartość całkowita ma zakres pomiędzy -32,768 do 32,767 . Jeśli umieścimy wartość liczbową, która jest poza tym zakresem , Excel pokaże błąd .

1.2 String to Long

Na stronie Funkcja CLng konwertuje numeryczną wartość łańcuchową na long datatype Działa ona podobnie jak funkcja CInt. Kluczową różnicą jest jej zakres który znajduje się pomiędzy -2,147,483,648 oraz 2,147,483,647.

 Kod do uruchomienia jest tutaj poniżej:  Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub 

Tutaj, komórki B3:B9 zawierać pewne numeryczna wartość łańcuchowa oraz przekształcona l liczby ong są w komórkach C3:C9. Na stronie Funkcja CLng przekształcona -32800 oraz 32800 pomyślnie do długie liczby który Funkcja CInt nie mógł. Ale dostanie też błąd jeśli wejście wartość numeryczna jest poza zasięgiem.

1.3 Przekształcanie ciągu znaków na liczbę dziesiętną

Używanie Funkcja CDec możemy konwersja a numeryczna wartość łańcuchowa do decimal datatype. Run następujący kod do konwersja the wartości numeryczne w komórkach B3:B7 do decimal datatype.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CDec(Cells(i, 2)) Next End Sub 

1.4 String to Single

W tym przykładzie zamienimy ciągi wejściowe na pojedynczy typ danych (single-precision floating-point). W tym celu musimy użyć Funkcja CSng .

Pojedynczy zakres datatype-. (i) -3,402823E38 do -1.401298E-45 dla negatywny numery.

(ii) 1.401298E-45 do 3.402823E38 dla pozytywny numery.

Uruchom następujący kod w edytorze visual basic.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub 

Na wyjściu, komórki B3:B9 zawierać pewne numeryczna wartość łańcuchowa, oraz przekonwertowane liczby typu pojedynczego są w komórkach C3:C9. Ale dostanie też błąd jeśli wejście wartość numeryczna jest poza zasięgiem.

1.5 String to Double

W tym przykładzie zamienimy ciągi wejściowe na typ danych double (double-precision floating-point). W tym celu musimy użyć Funkcja CDbl .

Typ danych double obejmuje zakresy-. (i) -1,79769313486231E308 do -4.94065645841247E-324 dla negatywny numery.

(ii) 4.94065645841247E-324 do 1.79769313486232E308 dla pozytywny numery.

Uruchom następujący kod w edytorze visual basic.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub 

Na wyjściu, komórki B3:B9 zawierać pewne numeryczna wartość łańcuchowa oraz przekonwertowane liczby typu danych double są w komórkach C3:C9. Ale dostanie też błąd jeśli wejście wartość numeryczna jest poza zasięgiem.

1.6 String to Currency

Na stronie typ danych waluty jest przydatny, gdy obliczenia dotyczą pieniądze . Ponadto, jeśli chcemy mieć większą dokładność w naprawiono - punkt obliczenie , użycie typu danych currency jest dobrym wyborem.Musimy użyć Funkcja CCur aby przekonwertować ciąg znaków na typ danych waluty Typ danych zakresy z -922,337,203,685,477.5808 do 922,337,203,685,477.5808.

Kod do konwersja numeryczna wartość łańcuchowa komórki B3:B7 do typ danych waluty w komórkach C3:C7 znajduje się poniżej.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CCur(Cells(i, 2)) Next End Sub 

1.7 String to Byte

Na stronie Funkcja CByte konwertuje numeryczne wartości łańcuchowe na typ danych bajtowych który waha się od 0 do 255.

Kod jest następujący :

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CByte(Cells(i, 2)) Next End Sub 

Na wyjściu, komórki B3:B9 zawierać pewne numeryczna wartość łańcuchowa, oraz przekonwertowane liczby typu danych bajtowych są w komórkach C3:C9. Ale dostanie też błąd jeśli wejście wartość numeryczna jest poza zasięgiem.

Czytaj więcej: Jak przekonwertować ciąg na długi za pomocą VBA w Excelu

Podobne lektury

  • Konwersja String na Double w Excelu VBA (5 metod)
  • Jak przekonwertować tekst na liczbę za pomocą Excela VBA (3 przykłady z makrami)
  • Napraw błąd konwersji na liczbę w programie Excel (6 metod)
  • Jak przekonwertować notację naukową na liczbę w programie Excel (7 metod)

2. Użycie niestandardowej funkcji VBA do sprawdzenia i konwersji ciągu znaków na liczbę w Excelu

Na tej ilustracji, zrobimy funkcja niestandardowa do konwersji ciągów znaków na liczby. Możemy wtedy wykorzystanie ten funkcja niestandardowa w naszym arkusz roboczy jakby funkcja wbudowana W tym przykładzie użyjemy Funkcja CInt do konwersja ciągi do liczby całkowite podczas tworzenia funkcja niestandardowa. Mogliśmy też wykorzystać wszystkie inne funkcje opisany w sposób 1 nawrócić się ciągi do różne typy danych Teraz wykonaj poniższe kroki, aby to osiągnąć.

Kroki:

  • Tutaj, w komórkach B3:B7, mamy kilka liczbowych wartości łańcuchowych.

  • Teraz w edytorze visual basic, kopia oraz pasta następujący kod, a następnie naciśnij Ctrl + S do uratować
 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 
  • W komórce C3 , zacząć pisać na maszynie the nazwa funkcji ( StringToNumber ). Excel będzie automatycznie sugerować the funkcja do wykorzystania. Naciśnij the Klawisz tabulacji aby wprowadzić funkcję.

  • Połóż odniesienie do komórki B3 jako jedyny argument.

  • Teraz naciśnij Wejdź na stronę po zamknięciu nawiasów.

  • Zlokalizuj Uchwyt do napełniania na prawy dolny róg komórki C3 do stosować funkcja dla komórek C4:C7.

  • Końcowe wyjście to pożądane liczby całkowite z wartości ciągów.

3. Kod VBA do konwersji wybranego zakresu komórek na liczby w Excelu

Na tej ilustracji, przekonwertujemy zakres z wybrane komórki zawierających wartości łańcuchowe na liczby całkowite. Jeśli któraś z komórek zawiera nienumeryczne w nim wartość, wyjściem będzie kreska (-) linia zamiast . podążaj za kroki :

  • Wybierz komórki B3:B6 mający ciągi liczbowe wartości i B7 który zawiera nienumeryczne

  • W Edytor Visual Basic kopia oraz pasta następujący kod .
 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 
  • Teraz naciśnij F5 do uruchomić the wyjście jak pokazano w zrzut ekranu .

Uwagi

  • Użyliśmy Funkcja "isNumeric w 2. i 3. metody w naszym kodzie VBA, który sprawdza, czy wyrażenie może zostać przekonwertowane na liczbę.
  • W sposób 1 , wykorzystaliśmy wbudowane funkcje (CInt, CDbl, CSng.....) do konwersja numerycznych wartości łańcuchowych do numery Ale jeśli jest wartość nienumeryczna to pokaże błąd niedopasowania .

Wniosek

Teraz już wiemy jak konwertować wartości ciągów znaków na liczby w Excelu. Mam nadzieję, że zachęci Cię to do pewniejszego korzystania z tej funkcjonalności. Wszelkie pytania i sugestie nie zapomnij umieścić w polu komentarza poniżej.

Hugh West jest bardzo doświadczonym trenerem i analitykiem Excela z ponad 10-letnim doświadczeniem w branży. Posiada tytuł licencjata w dziedzinie rachunkowości i finansów oraz tytuł magistra administracji biznesowej. Hugh ma pasję do nauczania i opracował unikalne podejście do nauczania, które jest łatwe do naśladowania i zrozumienia. Jego specjalistyczna wiedza na temat programu Excel pomogła tysiącom studentów i profesjonalistów na całym świecie doskonalić swoje umiejętności i osiągać doskonałe wyniki w karierze. Za pośrednictwem swojego bloga Hugh dzieli się swoją wiedzą ze światem, oferując bezpłatne samouczki programu Excel i szkolenia online, aby pomóc osobom indywidualnym i firmom w pełni wykorzystać swój potencjał.