Преобразование текста в число с помощью кода VBA Excel. Массовое преобразование чисел из текстового формата в числовой в заданном диапазоне.
Преобразование текста в число
Преобразование чисел, записанных как текст, в числовой формат осуществляется в VBA Excel с помощью функций преобразования типов данных. Числа в текстовом формате могут быть получены из:
В большинстве случаев VBA Excel сам распознает текст как число без всяких преобразований:
1 2 3 4 5 6 |
Sub Primer1() Debug.Print 23.1254 * 5.2 'Результат: 120,25208 Debug.Print "23,1254" * "5,2" 'Результат: 120,25208 Debug.Print TypeName("23,1254") 'Результат: String Debug.Print TypeName(CDbl("23,1254")) 'Результат: Double End Sub |
Обратите внимание на разделитель дробной части.
Преобразование смешанной строки
Преобразование в число строки, в начале которой имеются цифры, а далее идут другие символы, осуществляется в VBA Excel с помощью функции Val. Из других символов распознается только точка (.) в качестве разделителя дробной части.
1 2 3 4 |
Sub Primer2() Debug.Print Val("021.36abcde") 'Результат: 21,36 Debug.Print Format(Val("021.36abcde"), "000.0") 'Результат: 021,4 End Sub |
Массовое преобразование чисел
Иногда требуется массовое преобразование чисел из текстового формата в числовой в заданном диапазоне рабочего листа.
Пример преобразования диапазона ячеек с текстовым форматом в общий формат и значений ячеек из строки в число на примере объекта Selection:
1 2 3 4 5 6 7 |
Sub Primer3() Dim MyCell As Range Selection.NumberFormat = "General" For Each MyCell In Selection If IsNumeric(MyCell) Then MyCell = MyCell * 1 Next End Sub |
Сначала выбранному диапазону присваивается общий формат ("General"
). Но текстовые значения в ячейках еще не преобразовались в числа. Обходим циклом все ячейки диапазона, и, если текстовое значение ячейки можно интерпретировать как число, умножаем это значение на единицу. После этого текст будет преобразован в число.