Число в строке макроса excel

Функции преобразования типов данных в VBA Excel. Наименования функций, синтаксис, типы возвращаемых данных, диапазоны допустимых значений выражения-аргумента.

Синтаксис функций преобразования

Выражение (аргумент) – это любое строковое или числовое выражение, возвращающее значение, входящее в диапазон допустимых значений для аргумента. Выражение может быть представлено переменной или другой функцией.

Если аргумент, переданный в функцию, не входит в диапазон типа, в который преобразуются данные, происходит ошибка.

Функции преобразования типов

Наименования функций преобразования типов, типы возвращаемых данных, диапазоны допустимых значений для аргумента:

Функция Тип данных Диапазон значений аргумента
CBool Boolean Любое допустимое строковое или числовое выражение.
CByte Byte От 0 до 255.
CCur Currency От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.
CDate Date Любое допустимое выражение даты.
CDbl Double От -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений.
CDec Decimal 79 228 162 514 264 337 593 543 950 335 для чисел без десятичных знаков. Для чисел с 28 десятичными знаками диапазон составляет 7,9228162514264337593543950335. Наименьшим возможным числом, отличным от нуля, является число 0,0000000000000000000000000001.
CInt Integer От -32 768 до 32 767, дробная часть округляется.
CLng Long От -2 147 483 648 до 2 147 483 647, дробная часть округляется.
CSng Single От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений.
CStr String Результат, возвращаемый функцией CStr, зависит от аргумента Выражение.
CVar Variant Диапазон совпадает с типом Double  для числовых значений и с типом  String  для нечисловых значений.

Дополнительно для VBA7:

Функция Тип данных Диапазон значений аргумента
CLngLng LongLong От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, дробная часть округляется. Действительно только для 64-разрядных платформ.
CLngPtr LongPtr От -2 147 483 648 до 2 147 483 647 для 32-разрядных платформ, от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 для 64-разрядных платформ, дробная часть округляется в обоих типах систем.

Примеры преобразования типов

Функция CBool

Функция CBool используется для преобразования выражений в тип данных Boolean.

Dim a

a = CBool(10) ‘Результат: True

a = CBool(0) ‘Результат: False

a = CBool(«True») ‘Результат: True

a = CBool(«Test») ‘Результат: Error

Dim a, b, c

a = «Test1»

b = «Test2»

c = CBool(a = b) ‘Результат: False

c = CBool(a <> b) ‘Результат: True

Функция CByte

Функция CByte используется для преобразования выражений в тип данных Byte.

Dim a, b, c

a = 654

b = 3.36

c = a / b ‘Результат: 194,642857142857

c = CByte(c) ‘Результат: 195

c = a * b ‘Результат: 2197,44

c = CByte(c) ‘Результат: Error

Функция CCur

Функция CCur используется для преобразования выражений в тип данных Currency.

Dim a, b, c

a = 254.6598254

b = 569.2156843

c = a + b ‘Результат: 823,8755097

c = CCur(a + b) ‘Результат: 823,8755

Функция CDate

Функция CDate используется для преобразования выражений в тип данных Date. Она распознает форматы даты в соответствии с национальной настройкой системы.

Dim a As String, b As Date, c As Double

a = «28.01.2021»

b = CDate(a) ‘Результат: #28.01.2021#

c = CDbl(b) ‘Результат: 44224

Dim a

a = CDate(44298.63895) ‘Результат: #12.04.2021 15:20:05#

a = CDate(44298) ‘Результат: #12.04.2021#

a = CDate(0.63895) ‘Результат: #15:20:05#

Функция CDbl

Функция CDbl используется для преобразования выражений в тип данных Double.

Dim a As String, b As String, c As Double

a = «45,3695423»

b = «548955,756»

c = CDbl(a) + CDbl(b) ‘Результат: 549001,1255423

Примечание
Eсли основной язык системы – русский, при записи в редакторе VBA Excel дробного числа в виде текста, ставим в качестве разделителя десятичных разрядов – запятую. Проверьте разделитель по умолчанию для своей национальной системы:
MsgBox Application.DecimalSeparator

Функция CDec

Функция CDec используется для преобразования выражений в тип данных Decimal.

Dim a As String, b As Double, c

a = «5,9228162514264337593543950335»

b = 5.92281625142643

c = CDec(a) CDec(b) ‘Результат: 0,0000000000000037593543950335

Dim a As Double, b As String, c

a = 4.2643E14

b = CStr(a) ‘Результат: «4,2643E-14»

c = CDec(a) ‘Результат: 0,000000000000042643

Функция CInt

Функция CInt используется для преобразования выражений в тип данных Integer.

Dim a As String, b As Integer

a = «2355,9228»

b = CInt(a) ‘Результат: 2356

Функция CLng

Функция CLng используется для преобразования выражений в тип данных Long.

Dim a As Date, b As Long

a = CDate(44298.63895) ‘Результат: #12.04.2021 15:20:05#

b = CLng(a) ‘Результат: 44299

a = CDate(b) ‘Результат: #13.04.2021#

Функция CSng

Функция CSng используется для преобразования выражений в тип данных Single.

Dim a As String, b As Single

a = «3,2365625106»

b = CSng(a) ‘Результат: 3,236562

Функция CStr

Функция CStr используется для преобразования выражений в тип данных String.

Dim a As Single, b As String

a = 5106.23

b = CStr(a) ‘Результат: «5106,23»

Функция CVar

Функция CVar используется для преобразования выражений в тип данных Variant.

Dim a As Double, b As String, c

a = 549258.232546

b = «Новое сообщение»

c = CVar(a) ‘Результат: 549258,232546 (Variant/Double)

c = CVar(b) ‘Результат: «Новое сообщение» (Variant/String)

Функции преобразования типов данных используются в тексте процедур VBA Excel для того, чтобы указать, что результатом выполнения той или иной операции должны стать данные определенного типа, отличающегося от типа, заданного по умолчанию.


Numeric values are defined by data types like integer or byte. These data types are used for optimizing the processing and memory allocation in Excel. In this guide, we’re going to show you how to convert string into number in Excel VBA.

Download Workbook

Data types in VBA

Like in some other programming languages, VBA uses data types to identify what variables it can store and how they are stored. Most of the data types in VBA define numeric values. Here is a brief list of numeric data types:

Data type Storage Range
Byte 1 byte 0 to 255
Integer 2 bytes -32,768 to 32,767
Long 4 bytes -2,147,483,648 to 2,147,483,647
Single 4 bytes -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values
Double 8 bytes -1.79769313486231E308 to-4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
LongLong 8 bytes

-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

Valid on 64-bit platforms only.

Currency 8 bytes -922,337,203,685,477.5808 to 922,337,203,685,477.5807
Decimal 14 bytes +/-79,228,162,514,264,337,593,543,950,335 with no decimal point;
+/-7.9228162514264337593543950335 with 28 places to the right of the decimal

Since there are many numeric data types, there are many functions to convert a string into number in Excel VBA.

Functions to a convert string into number in Excel VBA

All conversion functions use the same syntax: Each requires a single string argument to convert into a number. For example:

Each function returns an error If the string argument either is not a numeric or is outside the range of the data type being converted.

CInt(«A») returns a type mismatch error, because the «A» is not a numeric value.

CByte(«1250») returns an overflow exception.

Function Return type Example
CByte Byte CByte(«65.75») returns 66
CCur Currency CCur(«$256,000.50») returns 256000.5
CDbl Double CDbl(128.239856 * 4.8 * 0.04) returns 24.622052352
CDec Decimal CDec(«15000000.5678») returns 15000000.5678
CInt Integer CInt(«1234.56») returns 1235
CLng Long CLng(«1,500,000.88») returns 15000001
CLngLng LongLong CLngLng(«1,250,500,000.88») returns 1250500001
CSng Single CSng(«5.67854») returns 5.67854

Bonus: Use IsNumeric function to verify value

To avoid type mismatch errors, you can use the IsNumeric function to check if the expression is numeric or not. The function returns Boolean value based on the expression. TRUE if the expression is numeric, FALSE otherwise.

Here is a sample function that can check the data first, and convert the it into an integer if it is numeric. If the argument is not a valid number, the function returns 0.

Function ConvertInt(arg As String) As Integer
 If IsNumeric(arg) Then ConvertInt = CInt(arg)
End Function
 

NURLAN

Пользователь

Сообщений: 4
Регистрация: 01.01.1970

Здравствуйте уважаемые коллеги.  Помогите, пожалуйста, решить следующий вопрос:  
В таблице имеются числовые значения, представленные в текстовом виде. Эти данные необходимо   преобразовать в числовой формат.  

     Cells(1, 1).Select  
Selection.NumberFormat = «0.00»  

  Указанный код макроса меняет формат ячеек, но при дальнейшем использовании этих данных в свободной таблицы, расчет значений не производиться так как сами значения не преобразованы в числовой формат.    
Например: после выполнения выше указанного макроса, пока не нажмешь на преобразованную ячейку двойным кликом, данные не преобразовываются.

 

GIG_ant

Пользователь

Сообщений: 3102
Регистрация: 24.12.2012

Если хотите именно макросом, сделайте так:  

  With Cells(1, 1)  
.NumberFormat = «0.00»  
.value=.value*1  
End With

 

vigor

Пользователь

Сообщений: 172
Регистрация: 23.12.2012

Если без макроса, то вставляем 1 в ячейку, копируем, а потом спецвставкой, з параметром умножить и вся любовь.Очень полезная штука

 

NURLAN

Пользователь

Сообщений: 4
Регистрация: 01.01.1970

{quote}{login=GIG_ant}{date=01.07.2011 04:59}{thema=}{post}  

  With Cells(1, 1)  
.NumberFormat = «0.00»  
.value=.value*1  
End With  

    Помогло! Как теперь сделать если не одну ячейку, а почти весь столбец.  
например:  

  Range(Cells(2, col), Cells(lLastRow, col)).Select  
‘col — определенный столбец  
‘lLastRow- последняя заполненная ячейка  

  {/post}{/quote}

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

Если без цикла, то спец.вставкой:  
With Range(Cells(2, col), Cells(iLastRow, col))  
.Copy  
.PasteSpecial Paste:=xlPasteValues  
.NumberFormat = «0.00»  
.Value = .Value  
End With

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Доброго дня всем!  
Извините, за непрошеное ввмешательство, но мне єто тоже интересно.  
Если, например,  на базе вашего кода я пишу пользовательськую функцию  

  Function Число()  
Dim objCell As Object  
For Each objCell In objRange  
With Range(Cells(2, col), Cells(iLastRow, col))  
.Copy  
.PasteSpecial Paste:=xlPasteValues  
.NumberFormat = «0.00»  
.Value = .Value  
End With  
 End If  
Next  
End Function  

  Выдает ошибку значение.  
Что я не так сделал?  
С ув. Муля!

 

ran

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

For Each objCell In objRange  
objRange — что это такое?

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Это вообще не функция. Обзовите ее sub. Функция должна возвращать значение.

Я сам — дурнее всякого примера! …

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Ну обозвал  
Sub Число()  
Dim objCell As Object  
For Each objCell In objRange  
With Range(Cells(2, col), Cells(iLastRow, col))  
.Copy  
.PasteSpecial Paste:=xlPasteValues  
.NumberFormat = «0.00»  
.Value = .Value  
End With  
 End If  
Next  
End Sub  

  Все равно не работает.  
Ругается на строке End If  

  С ув. Муля!

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

{quote}{login=RAN}{date=02.07.2011 12:59}{thema=}{post}For Each objCell In objRange  
objRange — что это такое?{/post}{/quote}  
Я так понимаю что єто обект  
С ув. Муля!, который мне надо преобразовать в число

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

>> Все равно не работает.  
Правильно не работает. У Вас там куча необъявленых переменных к-рым не присвоено никаких значений, End If без If и вообще все это бессмыслица. Попробуйте так:  
Sub Число()  
   Dim c As Range, iLastRow&, col&  
   col = 2: iLastRow = 100  
   For Each c In Range(Cells(2, col), Cells(iLastRow, col))  
       c.Copy  
       c.PasteSpecial Paste:=xlPasteValues  
       c.NumberFormat = «0.00»  
       c.Value = c.Value  
   Next  
End Sub

Я сам — дурнее всякого примера! …

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Ув. KukLP!  
К сожалению не работает и ваш макрос.  
А вообще, то меня интересует пользоваиельськая функция на эту тему.

 

ran

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

A каким образом не работает макрос KukLP?  
Т.е. что, по вашему он должен делать, и как вы его запускаете?  
И что значит пользовательская функция на эту тему?

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

Прочитал сообщение Мули, посмотрел на код Сергея — с кодом всё в порядке. Не поленился проверить — <STRONG>работает</STRONG>. Муля, Вы в следующий раз пишите лучше так: «У МЕНЯ не работает» с указанием ЧТО именно не сработало: не запустился макрос, вместо чисел написал в ячейки нецензурное слово, выдал ошибку и выключил компьютер… <BR>Скорее всего Вы его просто не запустили.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

{quote}{login=Юрий М}{date=02.07.2011 04:09}{thema=}{post}Скорее всего Вы его просто не запустили.{/post}{/quote}:-)  
Муля, выложите кусок таблицы, где не работает(правила). Может все проще. Тот перебор, что у Вас — самый неэффективный метод. Глядишь и функцию поможем сделать. А так как Вы, надергать строк из разных макросов, не понимая что они значат…  
Пользуйтесь, пока выходные, планетянам скучно:-)

Я сам — дурнее всякого примера! …

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Хлопцы! Простите меня дурака, п-та!!!  
Я то своейдурной головой, думал что он должен,например, слово «один», превращать в цифру «1». А он оказывается текстовый форматЮ меняет на числовой.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Мда… Про сумму прописью знаем, а сумму из прописи…:-)

Я сам — дурнее всякого примера! …

 

R Dmitry

Пользователь

Сообщений: 3103
Регистрация: 22.12.2012

Excel,MSSQL,Oracle,Qlik

#18

02.07.2011 18:40:03

{quote}{login=KukLP}{date=02.07.2011 05:06}{thema=}{post}Мда… Про сумму прописью знаем, а сумму из прописи…:-){/post}{/quote}  
Сергей привет, если задаться целью  сделать такой код, то его сделать можно.  
если есть логика , как говориться «туда», значит есть и оттуда.

Спасибо

 

nerv

Пользователь

Сообщений: 3071
Регистрация: 22.12.2012

{quote}{login=Муля}{date=02.07.2011 01:24}{thema=}{post}Ну обозвал  
Sub Число()  
Dim objCell As Object  
For Each objCell In objRange{/post}{/quote}стиль объявления переменных прям как мой ^_^    
Как в школе учили)

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

{quote}{login=R Dmitry}{date=02.07.2011 06:40}{thema=Re: }{post}{quote}{login=KukLP}{date=02.07.2011 05:06}{thema=}{post}Мда… Про сумму прописью знаем, а сумму из прописи…:-){/post}{/quote}  
Сергей привет, если задаться целью  сделать такой код, то его сделать можно.  
если есть логика , как говориться «туда», значит есть и оттуда.{/post}{/quote}Да я не о том. Не проще ли набрать число, чем текст с последующим преобразованием его в число. Как-то в жизни не встречалось.

Я сам — дурнее всякого примера! …

 

R Dmitry

Пользователь

Сообщений: 3103
Регистрация: 22.12.2012

Excel,MSSQL,Oracle,Qlik

#21

02.07.2011 21:24:57

{quote}{login=KukLP}{date=02.07.2011 09:03}{thema=Re: Re: }{post}{quote}{login=R Dmitry}{date=02.07.2011 06:40}{thema=Re: }{post}{quote}{login=KukLP}{date=02.07.2011 05:06}{thema=}{post}Мда… Про сумму прописью знаем, а сумму из прописи…:-){/post}{/quote}  
Сергей привет, если задаться целью  сделать такой код, то его сделать можно.  
если есть логика , как говориться «туда», значит есть и оттуда.{/post}{/quote}Да я не о том. Не проще ли набрать число, чем текст с последующим преобразованием его в число. Как-то в жизни не встречалось.{/post}{/quote}  

  Ну не знаю как у Муля, но в жизни все может  быть, иногда в различных «экспортах» из различных программ встречается и не такое :)  

  хотя такого честно не встречал ни разу :)

Спасибо

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Самый простой пример, где это пригодится.  
У ведомости начисления зарплаты месяц словом, а вот у сводной — желательно цифрами.  
У всевозможных отчетах. В одном месте месяц словом, а в другоя цифрами. Анализ деятельности и так далее.  
Но если такая трансформация очень сложная, то не надо надрываться. Придумаю че нитьдр.  

  С ув. Муля!

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

я вижу это как-то так…  

  внимание — заготовка, чисто для примеру. ограничено целыми числами от 1 до 999999 и нет проверок на ошибки.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Здраствуйте ПЛАНЕТЯНЕ!  
Ув. ikki! Великолепная штука. А если бы с милионами и назваными вами проверками, было бы гениальною  
Большое спасибо!!!  
гениально

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

{quote}{login=Муля}{date=02.07.2011 10:50}{thema=}{post}Самый простой пример, где это пригодится. У ведомости начисления зарплаты месяц словом, а вот у сводной — желательно цифрами. <…> В одном месте месяц словом, а в другоя цифрами.{/post}{/quote}  
Просто нужно нормально вводить данные: месяц в виде ДАТЫ, а отображать его в нужном виде уже форматированием. Тогда не потребуются вот такие выкрутасы. Лечите причину, а не следствие.

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

{quote}{login=ikki}{date=03.07.2011 12:02}{thema=было скучно :)}{post}я вижу это как-то так…  

  внимание — заготовка, чисто для примеру. ограничено целыми числами от 1 до 999999 и нет проверок на ошибки.{/post}{/quote}  
Добавил миллионы и миллиарды на базе файла Александра (ikki), проверку на ошибки не делал

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

{quote}{login=Муля}{date=03.07.2011 12:18}{thema=}{post}Здраствуйте ПЛАНЕТЯНЕ!  
Ув. ikki! Великолепная штука. А если бы с милионами и назваными вами проверками, было бы гениальною  
Большое спасибо!!!  
гениально{/post}{/quote}  

  ну вот Вам и домашнее задание — доработать макрос :)  

  если более серьёзно — то всё-таки не вижу я в такой задаче практического смысла.  
а для «от нечего делать» — предполагаемая реализация довольно муторная (например, надо корректно обрабатывать варианты, когда есть миллины, но нет тысяч; кроме того, надо отслеживать «уровни» чисел-строк — т.е. чтобы макрос понимал, что «пятьсот пять» — это правильно, а «пять пятьсот» — неправильно…)  

  короче — ну её нафиг, такую задачку.  
сорри.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

{quote}{login=MCH}{date=03.07.2011 12:53}{thema=Re: было скучно :)}{post}  
Добавил миллионы и миллиарды на базе файла Александра (ikki), проверку на ошибки не делал{/post}{/quote}  

  вот как…    
отличный вариант  
честно говоря, про рекурсию я забыл начисто :(

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

Чуток сократил код: UDF — пропись2число2()

 

Guest

Гость

#30

03.07.2011 14:03:32

{quote}{login=MCH}{date=03.07.2011 01:16}{thema=}{post}Чуток сократил код: UDF — пропись2число2(){/post}{/quote}  
Можно (нужно) еще добавить Option Compare Text

Иногда при написании макросов необходимо производить вычисления или сравнения числовых значений, которые вносятся в поля «TextBox».  Существует небольшая проблемка при работе с этими данными – информация из поля «TextBox» воспринимается программой как текстовая и, соответственно, в расчетах не может использоваться.

Для решения денной проблемы в VBA можно использовать функцию  VAL(), которая переводит в численный формат данных. VAL  — это функция конвертирующая текстовые значения аргумента в целые числовые или числовые значения с плавающей запятой. Следует отметить что функция Val при преобразовании десятичных дробей в число может распознать только точку, то есть, если вы напишете десятичную дробь через запятую, то функция распознает только первую (целую)часть дроби, остальной текст после запятой функция не воспримет. Например: VAL(«10,8»)= 10

Рассмотрим пример кода с данной функцией (VAL) и без нее:

Существует форма для внесения данных, в которой в два поля «TextBox1» и «TextBox1»  вносятся числа, которые сравниваются нажатием кнопки «Сравнить»(CommandButton1) и суммируются нажатием кнопки «Сумма» (CommandButton2).форма для заполнения exccel VBA

    Если на нажатие кнопки сравнения «Сравнить»(CommandButton1) использовать код:

    1. Private Sub CommandButton1_Click()
    2. Dim i, b As String
    3. i = TextBox1.Value
    4. b = TextBox2.Value
    5. If i < b = True Then MsgBox («Второе число больше «)
    6. If i > b = True Then MsgBox («Первое число больше «)
    7. End Sub

    А на нажатие кнопки суммы «Сумма» (CommandButton2) применить код:

    1. Private Sub CommandButton2_Click()
    2. Dim i, b, d As String
    3. i = UserForm1.TextBox1.Value
    4. b = UserForm1.TextBox2.Value
    5. d = i + b
    6. TextBox3.Value = d End Sub

    Сравнение значений будет выполняться верно, но расчеты суммы будут неверными:сравнение чисел макрос VBAСумма чисел макрос VBA

    Применим функцию VAL () в этих кодах:

      1-й код (Сравнение двух чисел)

      1. Private Sub CommandButton1_Click()
      2. Dim i, b As String
      3. i = Val(UserForm1.TextBox1.Value)
      4. b = Val(UserForm1.TextBox2.Value)
      5. If i < b = True Then MsgBox («Второе число больше «)
      6. If i > b = True Then MsgBox («Первое число больше «)
      7. End Sub

      2-й код (Сумма двух чисел)

      1. Private Sub CommandButton2_Click()
      2. Dim i, b, d As String
      3. i = Val(UserForm1.TextBox1.Value)
      4. b = Val(UserForm1.TextBox2.Value)
      5. d = i + b
      6. TextBox3.Value = d End Sub

      С таким кодом кнопки формы UserForm1 работают корректно, как показано на скриншоте далее.Верная сумма в VBA

      Скачать файл с макросом суммы и сравнения двух чисел.

      Содержание

      • Конвертация числа в текстовый вид
        • Способ 1: форматирование через контекстное меню
        • Способ 2: инструменты на ленте
        • Способ 3: использование функции
      • Конвертация текста в число
        • Способ 1: преобразование с помощью значка об ошибке
        • Способ 2: конвертация при помощи окна форматирования
        • Способ 3: конвертация посредством инструментов на ленте
        • Способ 4: применение формулы
        • Способ 5: применение специальной вставки
        • Способ 6: использование инструмента «Текст столбцами»
        • Способ 7: применение макросов
      • Вопросы и ответы

      Текст в числа и наоборот в Microsoft Excel

      Одной из частых задач, с которыми сталкиваются пользователи программы Эксель, является преобразования числовых выражений в текстовый формат и обратно. Этот вопрос часто заставляет потратить на решение много времени, если юзер не знает четкого алгоритма действий. Давайте разберемся, как можно решить обе задачи различными способами.

      Конвертация числа в текстовый вид

      Все ячейки в Экселе имеют определенный формат, который задает программе, как ей рассматривать то или иное выражение. Например, даже если в них будут записаны цифры, но формат выставлен текстовый, то приложение будет рассматривать их, как простой текст, и не сможет проводить с такими данными математические вычисления. Для того, чтобы Excel воспринимал цифры именно как число, они должны быть вписаны в элемент листа с общим или числовым форматом.

      Для начала рассмотрим различные варианты решения задачи конвертации чисел в текстовый вид.

      Способ 1: форматирование через контекстное меню

      Чаще всего пользователи выполняют форматирование числовых выражений в текстовые через контекстное меню.

      1. Выделяем те элементы листа, в которых нужно преобразовать данные в текст. Как видим, во вкладке «Главная» на панели инструментов в блоке «Число» в специальном поле отображается информация о том, что данные элементы имеют общий формат, а значит, цифры, вписанные в них, воспринимаются программой, как число.
      2. Общий формат в Microsoft Excel

      3. Кликаем правой кнопкой мыши по выделению и в открывшемся меню выбираем позицию «Формат ячеек…».
      4. Переход в окно форматирования в Microsoft Excel

      5. В открывшемся окне форматирования переходим во вкладку «Число», если оно было открыто в другом месте. В блоке настроек «Числовые форматы» выбираем позицию «Текстовый». Для сохранения изменений жмем на кнопку «OK» в нижней части окна.
      6. Окно форматирования в Microsoft Excel

      7. Как видим, после данных манипуляций в специальном поле высвечивается информация о том, что ячейки были преобразованы в текстовый вид.
      8. Ячейки преобоазованы в текстовый формат в Microsoft Excel

      9. Но если мы попытаемся подсчитать автосумму, то она отобразится в ячейке ниже. Это означает, что преобразование было совершено не полностью. В этом и заключается одна из фишек Excel. Программа не дает завершить преобразование данных наиболее интуитивно понятным способом.
      10. Автосумма в Microsoft Excel

      11. Чтобы завершить преобразование, нам нужно последовательно двойным щелчком левой кнопки мыши поместить курсор в каждый элемент диапазона в отдельности и нажать на клавишу Enter. Чтобы упростить задачу вместо двойного щелчка можно использовать нажатие функциональной клавиши F2.
      12. Преобразование числа в текст в Microsoft Excel

      13. После выполнения данной процедуры со всеми ячейками области, данные в них будут восприниматься программой, как текстовые выражения, а, следовательно, и автосумма будет равна нулю. Кроме того, как видим, левый верхний угол ячеек будет окрашен в зеленый цвет. Это также является косвенным признаком того, что элементы, в которых находятся цифры, преобразованы в текстовый вариант отображения. Хотя этот признак не всегда является обязательным и в некоторых случаях такая пометка отсутствует.

      Автосумма равна 0 в Microsoft Excel

      Урок: Как изменить формат в Excel

      Способ 2: инструменты на ленте

      Преобразовать число в текстовый вид можно также воспользовавшись инструментами на ленте, в частности, использовав поле для показа формата, о котором шел разговор выше.

      1. Выделяем элементы, данные в которых нужно преобразовать в текстовый вид. Находясь во вкладке «Главная» кликаем по пиктограмме в виде треугольника справа от поля, в котором отображается формат. Оно расположено в блоке инструментов «Число».
      2. Переход к форматированию на ленте в Microsoft Excel

        Lumpics.ru

      3. В открывшемся перечне вариантов форматирования выбираем пункт «Текстовый».
      4. Выбор текстового формата в Microsoft Excel

      5. Далее, как и в предыдущем способе, последовательно устанавливаем курсор в каждый элемент диапазона двойным щелчком левой кнопки мыши или нажатием клавиши F2, а затем щелкаем по клавише Enter.

      Данные преобразовываются в текстовый вариант.

      Способ 3: использование функции

      Ещё одним вариантом преобразования числовых данных в тестовые в Экселе является применение специальной функции, которая так и называется – ТЕКСТ. Данный способ подойдёт, в первую очередь, если вы хотите перенести числа как текст в отдельный столбец. Кроме того, он позволит сэкономить время на преобразовании, если объем данных слишком большой. Ведь, согласитесь, что перещелкивать каждую ячейку в диапазоне, насчитывающем сотни или тысячи строк – это не самый лучший выход.

      1. Устанавливаем курсор в первый элемент диапазона, в котором будет выводиться результат преобразования. Щелкаем по значку «Вставить функцию», который размещен около строки формул.
      2. Переход в Мастер функций в Microsoft Excel

      3. Запускается окно Мастера функций. В категории «Текстовые» выделяем пункт «ТЕКСТ». После этого кликаем по кнопке «OK».
      4. Переход к аргументам функции ТЕКСТ в Microsoft Excel

      5. Открывается окно аргументов оператора ТЕКСТ. Данная функция имеет следующий синтаксис:

        =ТЕКСТ(значение;формат)

        Открывшееся окно имеет два поля, которые соответствуют данным аргументам: «Значение» и «Формат».

        В поле «Значение» нужно указать преобразовываемое число или ссылку на ячейку, в которой оно находится. В нашем случае это будет ссылка на первый элемент обрабатываемого числового диапазона.

        В поле «Формат» нужно указать вариант отображения результата. Например, если мы введем «0», то текстовый вариант на выходе будет отображаться без десятичных знаков, даже если в исходнике они были. Если мы внесем «0,0», то результат будет отображаться с одним десятичным знаком, если «0,00», то с двумя, и т.д.

        После того, как все требуемые параметры введены, щелкаем по кнопке «OK».

      6. Аргументы функции ТЕКСТ в Microsoft Excel

      7. Как видим, значение первого элемента заданного диапазона отобразилось в ячейке, которую мы выделили ещё в первом пункте данного руководства. Для того, чтобы перенести и другие значения, нужно скопировать формулу в смежные элементы листа. Устанавливаем курсор в нижний правый угол элемента, который содержит формулу. Курсор преобразуется в маркер заполнения, имеющий вид небольшого крестика. Зажимаем левую кнопку мыши и протаскиваем по пустым ячейкам параллельно диапазону, в котором находятся исходные данные.
      8. Маркер заполнения в Microsoft Excel

      9. Теперь весь ряд заполнен требуемыми данными. Но и это ещё не все. По сути, все элементы нового диапазона содержат в себе формулы. Выделяем эту область и жмем на значок «Копировать», который расположен во вкладке «Главная» на ленте инструментов группе «Буфер обмена».
      10. Копирование в Microsoft Excel

      11. Далее, если мы хотим сохранить оба диапазона (исходный и преобразованный), не снимаем выделение с области, которая содержит формулы. Кликаем по ней правой кнопкой мыши. Происходит запуск контекстного списка действий. Выбираем в нем позицию «Специальная вставка». Среди вариантов действий в открывшемся списке выбираем «Значения и форматы чисел».
        Специальная вставка в Microsoft Excel

        Если же пользователь желает заменить данные исходного формата, то вместо указанного действия нужно выделить именно его и произвести вставку тем же способом, который указан выше.

      12. Специальная вставка в исходный диапазон в Microsoft Excel

      13. В любом случае, в выбранный диапазон будут вставлены данные в текстовом виде. Если же вы все-таки выбрали вставку в исходную область, то ячейки, содержащие формулы, можно очистить. Для этого выделяем их, кликаем правой кнопкой мыши и выбираем позицию «Очистить содержимое».

      Очистка содержимого в Microsoft Excel

      На этом процедуру преобразования можно считать оконченной.

      Урок: Мастер функций в Excel

      Конвертация текста в число

      Теперь давайте разберемся, какими способами можно выполнить обратную задачу, а именно как преобразовать текст в число в Excel.

      Способ 1: преобразование с помощью значка об ошибке

      Проще и быстрее всего выполнить конвертацию текстового варианта с помощью специального значка, который сообщает об ошибке. Этот значок имеет вид восклицательного знака, вписанного в пиктограмму в виде ромба. Он появляется при выделении ячеек, которые имеют пометку в левом верхнем углу зеленым цветом, обсуждаемую нами ранее. Эта пометка ещё не свидетельствует о том, что данные находящиеся в ячейке обязательно ошибочные. Но цифры, расположенные в ячейке имеющей текстовый вид, вызывают подозрения у программы в том, что данные могут быть внесены некорректно. Поэтому на всякий случай она их помечает, чтобы пользователь обратил внимание. Но, к сожалению, такие пометки Эксель выдает не всегда даже тогда, когда цифры представлены в текстовом виде, поэтому ниже описанный способ подходит не для всех случаев.

      1. Выделяем ячейку, в которой содержится зеленый индикатор о возможной ошибке. Кликаем по появившейся пиктограмме.
      2. Значок об ошибке в Microsoft Excel

      3. Открывается список действий. Выбираем в нем значение «Преобразовать в число».
      4. Преобразование в число в Microsoft Excel

      5. В выделенном элементе данные тут же будут преобразованы в числовой вид.

      Значение в ячейке преобразовано в число в Microsoft Excel

      Если подобных текстовых значений, которые следует преобразовать, не одно, а множество, то в этом случае можно ускорить процедуру преобразования.

      1. Выделяем весь диапазон, в котором находятся текстовые данные. Как видим, пиктограмма появилась одна для всей области, а не для каждой ячейки в отдельности. Щелкаем по ней.
      2. Пиктограмма для диапазона в Microsoft Excel

      3. Открывается уже знакомый нам список. Как и в прошлый раз, выбираем позицию «Преобразовать в число».

      преобразование в число диапазона в Microsoft Excel

      Все данные массива будут преобразованы в указанный вид.

      Преобразование в число выполнено в Microsoft Excel

      Способ 2: конвертация при помощи окна форматирования

      Как и для преобразования данных из числового вида в текст, в Экселе существует возможность обратного конвертирования через окно форматирования.

      1. Выделяем диапазон, содержащий цифры в текстовом варианте. Кликаем правой кнопкой мыши. В контекстном меню выбираем позицию «Формат ячеек…».
      2. Переход к окну форматирования в Microsoft Excel

      3. Выполняется запуск окна форматирования. Как и в предыдущий раз, переходим во вкладку «Число». В группе «Числовые форматы» нам нужно выбрать значения, которые позволят преобразовать текст в число. К ним относится пункты «Общий» и «Числовой». Какой бы из них вы не выбрали, программа будет расценивать цифры, введенные в ячейку, как числа. Производим выбор и жмем на кнопку. Если вы выбрали значение «Числовой», то в правой части окна появится возможность отрегулировать представление числа: выставить количество десятичных знаков после запятой, установить разделителями между разрядами. После того, как настройка выполнена, жмем на кнопку «OK».
      4. Окно форматирования в программе Microsoft Excel

      5. Теперь, как и в случае преобразования числа в текст, нам нужно прощелкать все ячейки, установив в каждую из них курсор и нажав после этого клавишу Enter.

      Прощелкивание ячеек в Microsoft Excel

      После выполнения этих действий все значения выбранного диапазона преобразуются в нужный нам вид.

      Способ 3: конвертация посредством инструментов на ленте

      Перевести текстовые данные в числовые можно, воспользовавшись специальным полем на ленте инструментов.

      1. Выделяем диапазон, который должен подвергнуться трансформации. Переходим во вкладку «Главная» на ленте. Кликаем по полю с выбором формата в группе «Число». Выбираем пункт «Числовой» или «Общий».
      2. Форматирование текстового формата в числовой через ленту в Microsoft Excel

      3. Далее прощелкиваем уже не раз описанным нами способом каждую ячейку преобразуемой области с применением клавиш F2 и Enter.

      Прощелкивание для трансформации в числовой формат в Microsoft Excel

      Значения в диапазоне будут преобразованы из текстовых в числовые.

      Способ 4: применение формулы

      Также для преобразования текстовых значений в числовые можно использовать специальные формулы. Рассмотрим, как это сделать на практике.

      1. В пустой ячейке, расположенной параллельно первому элементу диапазона, который следует преобразовать, ставим знак «равно» (=) и двойной символ «минус» (—). Далее указываем адрес первого элемента трансформируемого диапазона. Таким образом, происходит двойное умножение на значение «-1». Как известно, умножение «минус» на «минус» дает «плюс». То есть, в целевой ячейке мы получаем то же значение, которое было изначально, но уже в числовом виде. Даная процедура называется двойным бинарным отрицанием.
      2. Формула в Microsoft Excel

      3. Жмем на клавишу Enter, после чего получаем готовое преобразованное значение. Для того, чтобы применить данную формулу для всех других ячеек диапазона, используем маркер заполнения, который ранее был применен нами для функции ТЕКСТ.
      4. Маркер заполнения для формулы двойного бинарного отрицания в Microsoft Excel

      5. Теперь мы имеем диапазон, который заполнен значениями с формулами. Выделяем его и жмем на кнопку «Копировать» во вкладке «Главная» или применяем сочетание клавиш Ctrl+C.
      6. Коопирование числовых значений в Microsoft Excel

      7. Выделяем исходную область и производим щелчок по ней правой кнопкой мыши. В активировавшемся контекстном списке переходим по пунктам «Специальная вставка» и «Значения и форматы чисел».
      8.  Применение специальной вставки в Microsoft Excel

      9. Все данные вставлены в нужном нам виде. Теперь можно удалить транзитный диапазон, в котором находится формула двойного бинарного отрицания. Для этого выделяем данную область, кликом правой кнопки мыши вызываем контекстное меню и выбираем в нем позицию «Очистить содержимое».

      Очистка содержимого транзитного диапазона в Microsoft Excel

      Кстати, для преобразования значений данным методом совсем не обязательно использовать исключительно двойное умножение на «-1». Можно применять любое другое арифметическое действие, которое не ведет к изменению значений (сложение или вычитание нуля, выполнение возведения в первую степень и т.д.)

      Урок: Как сделать автозаполнение в Excel

      Способ 5: применение специальной вставки

      Следующий способ по принципу действия очень похож на предыдущий с той лишь разницей, что для его использования не нужно создавать дополнительный столбец.

      1. В любую пустую ячейку на листе вписываем цифру «1». Затем выделяем её и жмем на знакомый значок «Копировать» на ленте.
      2. Копирование цифры 1 в Microsoft Excel

      3. Выделяем область на листе, которую следует преобразовать. Кликаем по ней правой кнопкой мыши. В открывшемся меню дважды переходим по пункту «Специальная вставка».
      4. Переход в специальную вставку в Microsoft Excel

      5. В окне специальной вставки выставляем переключатель в блоке «Операция» в позицию «Умножить». Вслед за этим жмем на кнопку «OK».
      6. Специальная вставка в программе Microsoft Excel

      7. После этого действия все значения выделенной области будут преобразованы в числовые. Теперь при желании можно удалить цифру «1», которую мы использовали в целях конвертации.

      Диапазон преобразован в число в помощью специальной вставки в Microsoft Excel

      Способ 6: использование инструмента «Текст столбцами»

      Ещё одним вариантом, при котором можно преобразовать текст в числовой вид, является применение инструмента «Текст столбцами». Его есть смысл использовать тогда, когда вместо запятой в качестве разделителя десятичных знаков используется точка, а в качестве разделителя разрядов вместо пробела – апостроф. Этот вариант воспринимается в англоязычном Экселе, как числовой, но в русскоязычной версии этой программы все значения, которые содержат указанные выше знаки, воспринимаются как текст. Конечно, можно перебить данные вручную, но если их много, это займет значительное количество времени, тем более что существует возможность гораздо более быстрого решения проблемы.

      1. Выделяем фрагмент листа, содержимое которого нужно преобразовать. Переходим во вкладку «Данные». На ленте инструментов в блоке «Работа с данными» кликаем по значку «Текст по столбцам».
      2. Переход к инструменту Текст по столбцам в Microsoft Excel

      3. Запускается Мастер текстов. В первом окне обратите внимание, чтобы переключатель формата данных стоял в позиции «С разделителями». По умолчанию он должен находиться в этой позиции, но проверить состояние будет не лишним. Затем кликаем по кнопке «Далее».
      4. Первое окно Мастера текстов в Microsoft Excel

      5. Во втором окне также оставляем все без изменений и жмем на кнопку «Далее».
      6. Второе окно Мастера текстов в Microsoft Excel

      7. А вот после открытия третьего окна Мастера текстов нужно нажать на кнопку «Подробнее».
      8. Третье окно Мастера текстов в Microsoft Excel

      9. Открывается окно дополнительной настройки импорта текста. В поле «Разделитель целой и дробной части» устанавливаем точку, а в поле «Разделитель разрядов» — апостроф. Затем делаем один щелчок по кнопке «OK».
      10. Дополнительная настройка импорта текста в Microsoft Excel

      11. Возвращаемся в третье окно Мастера текстов и жмем на кнопку «Готово».
      12. Завершение работы в Мастере текста в Microsoft Excel

      13. Как видим, после выполнения данных действий числа приняли привычный для русскоязычной версии формат, а это значит, что они одновременно были преобразованы из текстовых данных в числовые.

      Разделители приняли обычный формат в Microsoft Excel

      Способ 7: применение макросов

      Если вам часто приходится преобразовывать большие области данных из текстового формата в числовой, то имеется смысл в этих целях записать специальный макрос, который будет использоваться при необходимости. Но для того, чтобы это выполнить, прежде всего, нужно в своей версии Экселя включить макросы и панель разработчика, если это до сих пор не сделано.

      1. Переходим во вкладку «Разработчик». Жмем на значок на ленте «Visual Basic», который размещен в группе «Код».
      2. Переход в редактор макросов в Microsoft Excel

      3. Запускается стандартный редактор макросов. Вбиваем или копируем в него следующее выражение:


        Sub Текст_в_число()
        Selection.NumberFormat = "General"
        Selection.Value = Selection.Value
        End Sub

        После этого закрываем редактор, выполнив нажатие стандартной кнопки закрытия в верхнем правом углу окна.

      4. Редактор макросов в Microsoft Excel

      5. Выделяем фрагмент на листе, который нужно преобразовать. Жмем на значок «Макросы», который расположен на вкладке «Разработчик» в группе «Код».
      6. Переход к списку макросов в Microsoft Excel

      7. Открывается окно записанных в вашей версии программы макросов. Находим макрос с наименованием «Текст_в_число», выделяем его и жмем на кнопку «Выполнить».
      8. Окно макросов в Microsoft Excel

      9. Как видим, тут же происходит преобразование текстового выражения в числовой формат.

      Преобразование текста в число с помощью макросов выполнено в Microsoft Excel

      Урок: Как создать макрос в Экселе

      Как видим, существует довольно много вариантов преобразования в Excel цифр, которые записаны в числовом варианте, в текстовый формат и в обратном направлении. Выбор определенного способа зависит от многих факторов. Прежде всего, это поставленная задача. Ведь, например, быстро преобразовать текстовое выражение с иностранными разделителями в числовое можно только использовав инструмент «Текст столбцами». Второй фактор, который влияет на выбор варианта – это объемы и частота выполняемых преобразований. Например, если вы часто используете подобные преобразования, имеет смысл произвести запись макроса. И третий фактор – индивидуальное удобство пользователя.

      Понравилась статья? Поделить с друзьями:
    • Число в ряде данных excel
    • Числа после ввода в ячейку excel прижимаются
    • Число в процентном формате excel
    • Числа попадают в интервал excel
    • Число в периоде excel