Obsah
V tomto článku probereme několik metod převodu řetězce na číslo v Excelu VBA. Ukážeme si, jak používat vestavěné funkce a jak pomocí nich vytvořit vlastní funkci pro převod řetězce na číslo s příklady kódu VBA.
Stáhnout cvičebnici
Stáhněte si tento cvičební sešit a procvičujte si při čtení tohoto článku.
Převod řetězce na číslo.xlsm3 způsoby převodu řetězce na číslo v aplikaci Excel VBA
1. Převod řetězce na číslo pomocí funkcí pro převod typu
Excel poskytuje několik vestavěných funkce pro konverzi typů . Můžeme je použít v našem kódu VBA pro snadný převod z řetězcového datového typu na různé datové typy.
1.1 Převod řetězce na celé číslo
Převod řetězec na celé číslo , můžeme použít Funkce CInt v našem kódu. Funkce CInt trvá pouze jeden argument a to by mělo být číselná hodnota . Vyzkoušejme následující kód v editoru Visual Code.
Sub StringToNumber() MsgBox CInt(12.3) End Sub
Tisk F5 na spustit na kód . Výstup je zobrazen v MsgBox .
Funkce CInt konvertované na číselný řetězec hodnota ("12.3" ) na celé číslo 12.
Chcete-li se dozvědět více o Funkce CInt , spusťte následující kód v editoru kódu a sledovat na výsledky .
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CInt(Cells(i, 2)) Next End Sub
Na stránkách výstup je zde v následujícím snímek obrazovky .
Vysvětlení kódu
V tomto kódu jsme použili Pro...Další smyčka použít Funkce CInt na řetězcích buněk B3:B7. Na stránkách výstupy jsou vytištěny v buňkách C3:C7. Použili jsme Funkce buněk pro zadání vstupních hodnot a místa, kde se mají výstupní hodnoty vytisknout.
Výsledky
Funkce CInt převedeno 25,5 na další celé číslo 26 Na druhou stranu převedeno 10.3 na 10, ne 11 Pokud je desetinná číselná hodnota menší než 0,5, funkce zaokrouhlí dolů na stejné číslo. Ale funkce desetinné číslo se číselná řetězcová hodnota změní na další celé číslo číslo, pokud je se rovná nebo větší než .5.
Poznámka
Celočíselná hodnota má rozsah mezi -32,768 na 32,767 Pokud vložíme číselnou hodnotu, která je mimo tento rozsah , Excel zobrazí chyba .
1.2 Převod řetězce na dlouhý řetězec
Na stránkách Funkce CLng převede číselnou řetězcovou hodnotu na datový typ long . Funguje podobně jako funkce CInt. Klíčový rozdíl spočívá v tom. rozsah která se nachází mezi -2,147,483,648 a 2,147,483,647.
Kód pro spuštění je uveden níže: Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub
Zde jsou buňky B3:B9 obsahují některé číselná hodnota řetězce a konvertované l čísla jsou v buňkách C3:C9. Na stránkách Funkce CLng konvertované -32800 a 32800 úspěšně na dlouhá čísla které Funkce CInt Ale také dostane... chyba pokud je vstup číselná hodnota je mimo dosah.
1.3 Převod řetězce na desetinné číslo
Použití Funkce CDec můžeme převést a číselná hodnota řetězce na desetinný datový typ. následující kód na převést na číselné hodnoty v buňkách B3:B7 na desetinný datový typ.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CDec(Cells(i, 2)) Next End Sub
1.4 Řetězec na jednotku
V tomto příkladu proměníme vstupní řetězce na. jediný datový typ (čísla s plovoucí desetinnou čárkou s jednou přesností). K tomu je třeba použít příkaz Funkce CSng .
Jediný datový typ ranges- (i) -3,402823E38 na -1.401298E-45 pro negativní čísla.
(ii) 1.401298E-45 na 3.402823E38 pro pozitivní čísla.
V editoru Visual Basic spusťte následující kód.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub
Na výstupu jsou buňky B3:B9 obsahují některé číselná řetězcová hodnota, a převedená čísla jednoduchého datového typu jsou v buňkách C3:C9. Ale také získá chyba pokud je vstup číselná hodnota je mimo dosah.
1.5 Řetězec na dvojnásobek
V tomto příkladu proměníme vstupní řetězce na. datový typ double (čísla s plovoucí desetinnou čárkou s dvojnásobnou přesností). K tomu je třeba použít příkaz Funkce CDbl .
Datový typ double se pohybuje v rozmezí- (i) -1,79769313486231E308 na -4.94065645841247E-324 pro negativní čísla.
(ii) 4.94065645841247E-324 na 1.79769313486232E308 pro pozitivní čísla.
V editoru Visual Basic spusťte následující kód.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub
Na výstupu jsou buňky B3:B9 obsahují některé číselná hodnota řetězce a převedená čísla datového typu double jsou v buňkách C3:C9. Ale také získá chyba pokud je vstup číselná hodnota je mimo dosah.
1.6 Převod řetězce na měnu
Na stránkách datový typ měny se hodí, když se výpočty týkají peníze . Navíc, pokud chceme větší přesnost pevný - bod výpočet , je použití datového typu měna dobrou volbou. Potřebujeme použít datový typ Funkce CCur převést řetězec na datový typ měny . Datový typ rozsahy z -922,337,203,685,477.5808 na 922,337,203,685,477.5808.
Kód k převést číselná řetězcová hodnota buněk B3:B7 na datový typ měny v buňkách C3:C7 je zde níže.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CCur(Cells(i, 2)) Next End Sub
1.7 Převod řetězce na bajt
Na stránkách Funkce CByte převádí číselné řetězcové hodnoty na datový typ byte která se pohybuje v rozmezí od 0 až 255.
Kód je následující :
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CByte(Cells(i, 2)) Next End Sub
Na výstupu jsou buňky B3:B9 obsahují některé číselná řetězcová hodnota, a převedená čísla datového typu byte jsou v buňkách C3:C9. Ale také získá chyba pokud je vstup číselná hodnota je mimo dosah.
Přečtěte si více: Jak převést řetězec na dlouhý pomocí VBA v aplikaci Excel
Podobná čtení
- Převod řetězce na dvojnásobek v aplikaci Excel VBA (5 metod)
- Jak převést text na číslo pomocí aplikace Excel VBA (3 příklady s makry)
- Oprava chyby převodu na číslo v aplikaci Excel (6 metod)
- Jak převést vědecký zápis na číslo v aplikaci Excel (7 metod)
2. Použití vlastní funkce VBA ke kontrole a převodu řetězce na číslo v aplikaci Excel
Na tomto obrázku vytvoříme. vlastní funkce pro převod řetězců na čísla. Pak můžeme použít tento vlastní funkce v našem pracovní list jako vestavěná funkce . V tomto příkladu použijeme příkaz Funkce CInt na převést řetězce na celá čísla při vytváření vlastní funkce. Mohli bychom také použít všechny další funkce popsané v metoda 1 převést struny na různé typy dat . Nyní postupujte podle následujících kroků.
Kroky:
- Zde, v buňkách B3:B7, máme několik číselných řetězcových hodnot.
- Nyní v editoru Visual Basic, kopírovat a vložit následující kód a stiskněte tlačítko Ctrl + S na uložit
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
- V buňce C3 , začít psát na název funkce ( StringToNumber ). Excel bude automaticky navrhnout na funkce k použití. Tisk . Klávesa Tab pro zadání funkce.
- Vložte odkaz na buňku B3 jako jediný argument.
- Nyní stiskněte Vstupte na po uzavření závorek.
- Vyhledejte Plnicí rukojeť na pravý dolní roh buňky C3 na použít funkce k buňkám C4:C7.
- Konečným výstupem jsou kýžená celá čísla z řetězcových hodnot.
3. Kód VBA pro převod vybraného rozsahu buněk na čísla v aplikaci Excel
V tomto příkladu převedeme položku rozsah z vybrané buňky obsahující řetězcové hodnoty na celá čísla. Pokud některá buňka obsahuje nečíselné hodnotu, výstupem bude pomlčka (-) místo toho . Sledujte kroky :
- Vybrat buňky B3:B6 s číselné řetězce hodnoty a B7 který obsahuje nečíselné
- V Editor jazyka Visual Basic kopírovat a vložit následující kód .
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 Další buňka End Sub
- Nyní stiskněte F5 na spustit na výstup jak je znázorněno na následujícím obrázku snímek obrazovky .
Poznámky
- Použili jsme funkce isNumeric v 2. a 3. metody v našem kódu VBA, který kontroluje, zda lze výraz převést na číslo.
- Na adrese metoda 1 , jsme použili vestavěné funkce (CInt, CDbl, CSng.....), abychom mohli převést číselné řetězcové hodnoty na čísla Ale pokud je nečíselná hodnota , zobrazí se chyba neshody .
Závěr
Nyní již víme, jak v Excelu převádět řetězcové hodnoty na čísla. Doufejme, že vás to povzbudí k jistějšímu používání této funkce. Jakékoli dotazy nebo připomínky nezapomeňte uvést v komentáři níže.