Функции преобразования типов данных в 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.2643E—14 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 |
Здравствуйте уважаемые коллеги. Помогите, пожалуйста, решить следующий вопрос: Cells(1, 1).Select Указанный код макроса меняет формат ячеек, но при дальнейшем использовании этих данных в свободной таблицы, расчет значений не производиться так как сами значения не преобразованы в числовой формат. |
GIG_ant Пользователь Сообщений: 3102 |
Если хотите именно макросом, сделайте так: With Cells(1, 1) |
vigor Пользователь Сообщений: 172 |
Если без макроса, то вставляем 1 в ячейку, копируем, а потом спецвставкой, з параметром умножить и вся любовь.Очень полезная штука |
NURLAN Пользователь Сообщений: 4 |
{quote}{login=GIG_ant}{date=01.07.2011 04:59}{thema=}{post} With Cells(1, 1) Помогло! Как теперь сделать если не одну ячейку, а почти весь столбец. Range(Cells(2, col), Cells(lLastRow, col)).Select {/post}{/quote} |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Если без цикла, то спец.вставкой: |
Муля Пользователь Сообщений: 307 |
Доброго дня всем! Function Число() Выдает ошибку значение. |
ran Пользователь Сообщений: 7091 |
For Each objCell In objRange |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Это вообще не функция. Обзовите ее sub. Функция должна возвращать значение. Я сам — дурнее всякого примера! … |
Муля Пользователь Сообщений: 307 |
Ну обозвал Все равно не работает. С ув. Муля! |
Муля Пользователь Сообщений: 307 |
{quote}{login=RAN}{date=02.07.2011 12:59}{thema=}{post}For Each objCell In objRange |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
>> Все равно не работает. Я сам — дурнее всякого примера! … |
Муля Пользователь Сообщений: 307 |
Ув. KukLP! |
ran Пользователь Сообщений: 7091 |
A каким образом не работает макрос KukLP? |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Прочитал сообщение Мули, посмотрел на код Сергея — с кодом всё в порядке. Не поленился проверить — <STRONG>работает</STRONG>. Муля, Вы в следующий раз пишите лучше так: «У МЕНЯ не работает» с указанием ЧТО именно не сработало: не запустился макрос, вместо чисел написал в ячейки нецензурное слово, выдал ошибку и выключил компьютер… <BR>Скорее всего Вы его просто не запустили. |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
{quote}{login=Юрий М}{date=02.07.2011 04:09}{thema=}{post}Скорее всего Вы его просто не запустили.{/post}{/quote}:-) Я сам — дурнее всякого примера! … |
Муля Пользователь Сообщений: 307 |
Хлопцы! Простите меня дурака, п-та!!! |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Мда… Про сумму прописью знаем, а сумму из прописи…:-) Я сам — дурнее всякого примера! … |
R Dmitry Пользователь Сообщений: 3103 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 |
{quote}{login=Муля}{date=02.07.2011 01:24}{thema=}{post}Ну обозвал |
KuklP Пользователь Сообщений: 14868 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} Я сам — дурнее всякого примера! … |
R Dmitry Пользователь Сообщений: 3103 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} Ну не знаю как у Муля, но в жизни все может быть, иногда в различных «экспортах» из различных программ встречается и не такое хотя такого честно не встречал ни разу
|
|
Муля Пользователь Сообщений: 307 |
Самый простой пример, где это пригодится. С ув. Муля! |
ikki Пользователь Сообщений: 9709 |
я вижу это как-то так… внимание — заготовка, чисто для примеру. ограничено целыми числами от 1 до 999999 и нет проверок на ошибки. фрилансер Excel, VBA — контакты в профиле |
Муля Пользователь Сообщений: 307 |
Здраствуйте ПЛАНЕТЯНЕ! |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
{quote}{login=Муля}{date=02.07.2011 10:50}{thema=}{post}Самый простой пример, где это пригодится. У ведомости начисления зарплаты месяц словом, а вот у сводной — желательно цифрами. <…> В одном месте месяц словом, а в другоя цифрами.{/post}{/quote} |
MCH Пользователь Сообщений: 3875 |
{quote}{login=ikki}{date=03.07.2011 12:02}{thema=было скучно :)}{post}я вижу это как-то так… внимание — заготовка, чисто для примеру. ограничено целыми числами от 1 до 999999 и нет проверок на ошибки.{/post}{/quote} |
ikki Пользователь Сообщений: 9709 |
{quote}{login=Муля}{date=03.07.2011 12:18}{thema=}{post}Здраствуйте ПЛАНЕТЯНЕ! ну вот Вам и домашнее задание — доработать макрос если более серьёзно — то всё-таки не вижу я в такой задаче практического смысла. короче — ну её нафиг, такую задачку. фрилансер Excel, VBA — контакты в профиле |
ikki Пользователь Сообщений: 9709 |
{quote}{login=MCH}{date=03.07.2011 12:53}{thema=Re: было скучно :)}{post} вот как… фрилансер Excel, VBA — контакты в профиле |
MCH Пользователь Сообщений: 3875 |
Чуток сократил код: 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} |
Иногда при написании макросов необходимо производить вычисления или сравнения числовых значений, которые вносятся в поля «TextBox». Существует небольшая проблемка при работе с этими данными – информация из поля «TextBox» воспринимается программой как текстовая и, соответственно, в расчетах не может использоваться.
Для решения денной проблемы в VBA можно использовать функцию VAL(), которая переводит в численный формат данных. VAL — это функция конвертирующая текстовые значения аргумента в целые числовые или числовые значения с плавающей запятой. Следует отметить что функция Val при преобразовании десятичных дробей в число может распознать только точку, то есть, если вы напишете десятичную дробь через запятую, то функция распознает только первую (целую)часть дроби, остальной текст после запятой функция не воспримет. Например: VAL(«10,8»)= 10
Рассмотрим пример кода с данной функцией (VAL) и без нее:
Существует форма для внесения данных, в которой в два поля «TextBox1» и «TextBox1» вносятся числа, которые сравниваются нажатием кнопки «Сравнить»(CommandButton1) и суммируются нажатием кнопки «Сумма» (CommandButton2).
Если на нажатие кнопки сравнения «Сравнить»(CommandButton1) использовать код:
- Private Sub CommandButton1_Click()
- Dim i, b As String
- i = TextBox1.Value
- b = TextBox2.Value
- If i < b = True Then MsgBox («Второе число больше «)
- If i > b = True Then MsgBox («Первое число больше «)
- End Sub
А на нажатие кнопки суммы «Сумма» (CommandButton2) применить код:
- Private Sub CommandButton2_Click()
- Dim i, b, d As String
- i = UserForm1.TextBox1.Value
- b = UserForm1.TextBox2.Value
- d = i + b
- TextBox3.Value = d End Sub
Сравнение значений будет выполняться верно, но расчеты суммы будут неверными:
Применим функцию VAL () в этих кодах:
1-й код (Сравнение двух чисел)
- Private Sub CommandButton1_Click()
- Dim i, b As String
- i = Val(UserForm1.TextBox1.Value)
- b = Val(UserForm1.TextBox2.Value)
- If i < b = True Then MsgBox («Второе число больше «)
- If i > b = True Then MsgBox («Первое число больше «)
- End Sub
2-й код (Сумма двух чисел)
- Private Sub CommandButton2_Click()
- Dim i, b, d As String
- i = Val(UserForm1.TextBox1.Value)
- b = Val(UserForm1.TextBox2.Value)
- d = i + b
- TextBox3.Value = d End Sub
С таким кодом кнопки формы UserForm1 работают корректно, как показано на скриншоте далее.
Скачать файл с макросом суммы и сравнения двух чисел.
Содержание
- Конвертация числа в текстовый вид
- Способ 1: форматирование через контекстное меню
- Способ 2: инструменты на ленте
- Способ 3: использование функции
- Конвертация текста в число
- Способ 1: преобразование с помощью значка об ошибке
- Способ 2: конвертация при помощи окна форматирования
- Способ 3: конвертация посредством инструментов на ленте
- Способ 4: применение формулы
- Способ 5: применение специальной вставки
- Способ 6: использование инструмента «Текст столбцами»
- Способ 7: применение макросов
- Вопросы и ответы
Одной из частых задач, с которыми сталкиваются пользователи программы Эксель, является преобразования числовых выражений в текстовый формат и обратно. Этот вопрос часто заставляет потратить на решение много времени, если юзер не знает четкого алгоритма действий. Давайте разберемся, как можно решить обе задачи различными способами.
Конвертация числа в текстовый вид
Все ячейки в Экселе имеют определенный формат, который задает программе, как ей рассматривать то или иное выражение. Например, даже если в них будут записаны цифры, но формат выставлен текстовый, то приложение будет рассматривать их, как простой текст, и не сможет проводить с такими данными математические вычисления. Для того, чтобы Excel воспринимал цифры именно как число, они должны быть вписаны в элемент листа с общим или числовым форматом.
Для начала рассмотрим различные варианты решения задачи конвертации чисел в текстовый вид.
Способ 1: форматирование через контекстное меню
Чаще всего пользователи выполняют форматирование числовых выражений в текстовые через контекстное меню.
- Выделяем те элементы листа, в которых нужно преобразовать данные в текст. Как видим, во вкладке «Главная» на панели инструментов в блоке «Число» в специальном поле отображается информация о том, что данные элементы имеют общий формат, а значит, цифры, вписанные в них, воспринимаются программой, как число.
- Кликаем правой кнопкой мыши по выделению и в открывшемся меню выбираем позицию «Формат ячеек…».
- В открывшемся окне форматирования переходим во вкладку «Число», если оно было открыто в другом месте. В блоке настроек «Числовые форматы» выбираем позицию «Текстовый». Для сохранения изменений жмем на кнопку «OK» в нижней части окна.
- Как видим, после данных манипуляций в специальном поле высвечивается информация о том, что ячейки были преобразованы в текстовый вид.
- Но если мы попытаемся подсчитать автосумму, то она отобразится в ячейке ниже. Это означает, что преобразование было совершено не полностью. В этом и заключается одна из фишек Excel. Программа не дает завершить преобразование данных наиболее интуитивно понятным способом.
- Чтобы завершить преобразование, нам нужно последовательно двойным щелчком левой кнопки мыши поместить курсор в каждый элемент диапазона в отдельности и нажать на клавишу Enter. Чтобы упростить задачу вместо двойного щелчка можно использовать нажатие функциональной клавиши F2.
- После выполнения данной процедуры со всеми ячейками области, данные в них будут восприниматься программой, как текстовые выражения, а, следовательно, и автосумма будет равна нулю. Кроме того, как видим, левый верхний угол ячеек будет окрашен в зеленый цвет. Это также является косвенным признаком того, что элементы, в которых находятся цифры, преобразованы в текстовый вариант отображения. Хотя этот признак не всегда является обязательным и в некоторых случаях такая пометка отсутствует.
Урок: Как изменить формат в Excel
Способ 2: инструменты на ленте
Преобразовать число в текстовый вид можно также воспользовавшись инструментами на ленте, в частности, использовав поле для показа формата, о котором шел разговор выше.
- Выделяем элементы, данные в которых нужно преобразовать в текстовый вид. Находясь во вкладке «Главная» кликаем по пиктограмме в виде треугольника справа от поля, в котором отображается формат. Оно расположено в блоке инструментов «Число».
- В открывшемся перечне вариантов форматирования выбираем пункт «Текстовый».
- Далее, как и в предыдущем способе, последовательно устанавливаем курсор в каждый элемент диапазона двойным щелчком левой кнопки мыши или нажатием клавиши F2, а затем щелкаем по клавише Enter.
Данные преобразовываются в текстовый вариант.
Способ 3: использование функции
Ещё одним вариантом преобразования числовых данных в тестовые в Экселе является применение специальной функции, которая так и называется – ТЕКСТ. Данный способ подойдёт, в первую очередь, если вы хотите перенести числа как текст в отдельный столбец. Кроме того, он позволит сэкономить время на преобразовании, если объем данных слишком большой. Ведь, согласитесь, что перещелкивать каждую ячейку в диапазоне, насчитывающем сотни или тысячи строк – это не самый лучший выход.
- Устанавливаем курсор в первый элемент диапазона, в котором будет выводиться результат преобразования. Щелкаем по значку «Вставить функцию», который размещен около строки формул.
- Запускается окно Мастера функций. В категории «Текстовые» выделяем пункт «ТЕКСТ». После этого кликаем по кнопке «OK».
- Открывается окно аргументов оператора ТЕКСТ. Данная функция имеет следующий синтаксис:
=ТЕКСТ(значение;формат)
Открывшееся окно имеет два поля, которые соответствуют данным аргументам: «Значение» и «Формат».
В поле «Значение» нужно указать преобразовываемое число или ссылку на ячейку, в которой оно находится. В нашем случае это будет ссылка на первый элемент обрабатываемого числового диапазона.
В поле «Формат» нужно указать вариант отображения результата. Например, если мы введем «0», то текстовый вариант на выходе будет отображаться без десятичных знаков, даже если в исходнике они были. Если мы внесем «0,0», то результат будет отображаться с одним десятичным знаком, если «0,00», то с двумя, и т.д.
После того, как все требуемые параметры введены, щелкаем по кнопке «OK».
- Как видим, значение первого элемента заданного диапазона отобразилось в ячейке, которую мы выделили ещё в первом пункте данного руководства. Для того, чтобы перенести и другие значения, нужно скопировать формулу в смежные элементы листа. Устанавливаем курсор в нижний правый угол элемента, который содержит формулу. Курсор преобразуется в маркер заполнения, имеющий вид небольшого крестика. Зажимаем левую кнопку мыши и протаскиваем по пустым ячейкам параллельно диапазону, в котором находятся исходные данные.
- Теперь весь ряд заполнен требуемыми данными. Но и это ещё не все. По сути, все элементы нового диапазона содержат в себе формулы. Выделяем эту область и жмем на значок «Копировать», который расположен во вкладке «Главная» на ленте инструментов группе «Буфер обмена».
- Далее, если мы хотим сохранить оба диапазона (исходный и преобразованный), не снимаем выделение с области, которая содержит формулы. Кликаем по ней правой кнопкой мыши. Происходит запуск контекстного списка действий. Выбираем в нем позицию «Специальная вставка». Среди вариантов действий в открывшемся списке выбираем «Значения и форматы чисел».
Если же пользователь желает заменить данные исходного формата, то вместо указанного действия нужно выделить именно его и произвести вставку тем же способом, который указан выше.
- В любом случае, в выбранный диапазон будут вставлены данные в текстовом виде. Если же вы все-таки выбрали вставку в исходную область, то ячейки, содержащие формулы, можно очистить. Для этого выделяем их, кликаем правой кнопкой мыши и выбираем позицию «Очистить содержимое».
На этом процедуру преобразования можно считать оконченной.
Урок: Мастер функций в Excel
Конвертация текста в число
Теперь давайте разберемся, какими способами можно выполнить обратную задачу, а именно как преобразовать текст в число в Excel.
Способ 1: преобразование с помощью значка об ошибке
Проще и быстрее всего выполнить конвертацию текстового варианта с помощью специального значка, который сообщает об ошибке. Этот значок имеет вид восклицательного знака, вписанного в пиктограмму в виде ромба. Он появляется при выделении ячеек, которые имеют пометку в левом верхнем углу зеленым цветом, обсуждаемую нами ранее. Эта пометка ещё не свидетельствует о том, что данные находящиеся в ячейке обязательно ошибочные. Но цифры, расположенные в ячейке имеющей текстовый вид, вызывают подозрения у программы в том, что данные могут быть внесены некорректно. Поэтому на всякий случай она их помечает, чтобы пользователь обратил внимание. Но, к сожалению, такие пометки Эксель выдает не всегда даже тогда, когда цифры представлены в текстовом виде, поэтому ниже описанный способ подходит не для всех случаев.
- Выделяем ячейку, в которой содержится зеленый индикатор о возможной ошибке. Кликаем по появившейся пиктограмме.
- Открывается список действий. Выбираем в нем значение «Преобразовать в число».
- В выделенном элементе данные тут же будут преобразованы в числовой вид.
Если подобных текстовых значений, которые следует преобразовать, не одно, а множество, то в этом случае можно ускорить процедуру преобразования.
- Выделяем весь диапазон, в котором находятся текстовые данные. Как видим, пиктограмма появилась одна для всей области, а не для каждой ячейки в отдельности. Щелкаем по ней.
- Открывается уже знакомый нам список. Как и в прошлый раз, выбираем позицию «Преобразовать в число».
Все данные массива будут преобразованы в указанный вид.
Способ 2: конвертация при помощи окна форматирования
Как и для преобразования данных из числового вида в текст, в Экселе существует возможность обратного конвертирования через окно форматирования.
- Выделяем диапазон, содержащий цифры в текстовом варианте. Кликаем правой кнопкой мыши. В контекстном меню выбираем позицию «Формат ячеек…».
- Выполняется запуск окна форматирования. Как и в предыдущий раз, переходим во вкладку «Число». В группе «Числовые форматы» нам нужно выбрать значения, которые позволят преобразовать текст в число. К ним относится пункты «Общий» и «Числовой». Какой бы из них вы не выбрали, программа будет расценивать цифры, введенные в ячейку, как числа. Производим выбор и жмем на кнопку. Если вы выбрали значение «Числовой», то в правой части окна появится возможность отрегулировать представление числа: выставить количество десятичных знаков после запятой, установить разделителями между разрядами. После того, как настройка выполнена, жмем на кнопку «OK».
- Теперь, как и в случае преобразования числа в текст, нам нужно прощелкать все ячейки, установив в каждую из них курсор и нажав после этого клавишу Enter.
После выполнения этих действий все значения выбранного диапазона преобразуются в нужный нам вид.
Способ 3: конвертация посредством инструментов на ленте
Перевести текстовые данные в числовые можно, воспользовавшись специальным полем на ленте инструментов.
- Выделяем диапазон, который должен подвергнуться трансформации. Переходим во вкладку «Главная» на ленте. Кликаем по полю с выбором формата в группе «Число». Выбираем пункт «Числовой» или «Общий».
- Далее прощелкиваем уже не раз описанным нами способом каждую ячейку преобразуемой области с применением клавиш F2 и Enter.
Значения в диапазоне будут преобразованы из текстовых в числовые.
Способ 4: применение формулы
Также для преобразования текстовых значений в числовые можно использовать специальные формулы. Рассмотрим, как это сделать на практике.
- В пустой ячейке, расположенной параллельно первому элементу диапазона, который следует преобразовать, ставим знак «равно» (=) и двойной символ «минус» (—). Далее указываем адрес первого элемента трансформируемого диапазона. Таким образом, происходит двойное умножение на значение «-1». Как известно, умножение «минус» на «минус» дает «плюс». То есть, в целевой ячейке мы получаем то же значение, которое было изначально, но уже в числовом виде. Даная процедура называется двойным бинарным отрицанием.
- Жмем на клавишу Enter, после чего получаем готовое преобразованное значение. Для того, чтобы применить данную формулу для всех других ячеек диапазона, используем маркер заполнения, который ранее был применен нами для функции ТЕКСТ.
- Теперь мы имеем диапазон, который заполнен значениями с формулами. Выделяем его и жмем на кнопку «Копировать» во вкладке «Главная» или применяем сочетание клавиш Ctrl+C.
- Выделяем исходную область и производим щелчок по ней правой кнопкой мыши. В активировавшемся контекстном списке переходим по пунктам «Специальная вставка» и «Значения и форматы чисел».
- Все данные вставлены в нужном нам виде. Теперь можно удалить транзитный диапазон, в котором находится формула двойного бинарного отрицания. Для этого выделяем данную область, кликом правой кнопки мыши вызываем контекстное меню и выбираем в нем позицию «Очистить содержимое».
Кстати, для преобразования значений данным методом совсем не обязательно использовать исключительно двойное умножение на «-1». Можно применять любое другое арифметическое действие, которое не ведет к изменению значений (сложение или вычитание нуля, выполнение возведения в первую степень и т.д.)
Урок: Как сделать автозаполнение в Excel
Способ 5: применение специальной вставки
Следующий способ по принципу действия очень похож на предыдущий с той лишь разницей, что для его использования не нужно создавать дополнительный столбец.
- В любую пустую ячейку на листе вписываем цифру «1». Затем выделяем её и жмем на знакомый значок «Копировать» на ленте.
- Выделяем область на листе, которую следует преобразовать. Кликаем по ней правой кнопкой мыши. В открывшемся меню дважды переходим по пункту «Специальная вставка».
- В окне специальной вставки выставляем переключатель в блоке «Операция» в позицию «Умножить». Вслед за этим жмем на кнопку «OK».
- После этого действия все значения выделенной области будут преобразованы в числовые. Теперь при желании можно удалить цифру «1», которую мы использовали в целях конвертации.
Способ 6: использование инструмента «Текст столбцами»
Ещё одним вариантом, при котором можно преобразовать текст в числовой вид, является применение инструмента «Текст столбцами». Его есть смысл использовать тогда, когда вместо запятой в качестве разделителя десятичных знаков используется точка, а в качестве разделителя разрядов вместо пробела – апостроф. Этот вариант воспринимается в англоязычном Экселе, как числовой, но в русскоязычной версии этой программы все значения, которые содержат указанные выше знаки, воспринимаются как текст. Конечно, можно перебить данные вручную, но если их много, это займет значительное количество времени, тем более что существует возможность гораздо более быстрого решения проблемы.
- Выделяем фрагмент листа, содержимое которого нужно преобразовать. Переходим во вкладку «Данные». На ленте инструментов в блоке «Работа с данными» кликаем по значку «Текст по столбцам».
- Запускается Мастер текстов. В первом окне обратите внимание, чтобы переключатель формата данных стоял в позиции «С разделителями». По умолчанию он должен находиться в этой позиции, но проверить состояние будет не лишним. Затем кликаем по кнопке «Далее».
- Во втором окне также оставляем все без изменений и жмем на кнопку «Далее».
- А вот после открытия третьего окна Мастера текстов нужно нажать на кнопку «Подробнее».
- Открывается окно дополнительной настройки импорта текста. В поле «Разделитель целой и дробной части» устанавливаем точку, а в поле «Разделитель разрядов» — апостроф. Затем делаем один щелчок по кнопке «OK».
- Возвращаемся в третье окно Мастера текстов и жмем на кнопку «Готово».
- Как видим, после выполнения данных действий числа приняли привычный для русскоязычной версии формат, а это значит, что они одновременно были преобразованы из текстовых данных в числовые.
Способ 7: применение макросов
Если вам часто приходится преобразовывать большие области данных из текстового формата в числовой, то имеется смысл в этих целях записать специальный макрос, который будет использоваться при необходимости. Но для того, чтобы это выполнить, прежде всего, нужно в своей версии Экселя включить макросы и панель разработчика, если это до сих пор не сделано.
- Переходим во вкладку «Разработчик». Жмем на значок на ленте «Visual Basic», который размещен в группе «Код».
- Запускается стандартный редактор макросов. Вбиваем или копируем в него следующее выражение:
Sub Текст_в_число()
Selection.NumberFormat = "General"
Selection.Value = Selection.Value
End Sub
После этого закрываем редактор, выполнив нажатие стандартной кнопки закрытия в верхнем правом углу окна.
- Выделяем фрагмент на листе, который нужно преобразовать. Жмем на значок «Макросы», который расположен на вкладке «Разработчик» в группе «Код».
- Открывается окно записанных в вашей версии программы макросов. Находим макрос с наименованием «Текст_в_число», выделяем его и жмем на кнопку «Выполнить».
- Как видим, тут же происходит преобразование текстового выражения в числовой формат.
Урок: Как создать макрос в Экселе
Как видим, существует довольно много вариантов преобразования в Excel цифр, которые записаны в числовом варианте, в текстовый формат и в обратном направлении. Выбор определенного способа зависит от многих факторов. Прежде всего, это поставленная задача. Ведь, например, быстро преобразовать текстовое выражение с иностранными разделителями в числовое можно только использовав инструмент «Текст столбцами». Второй фактор, который влияет на выбор варианта – это объемы и частота выполняемых преобразований. Например, если вы часто используете подобные преобразования, имеет смысл произвести запись макроса. И третий фактор – индивидуальное удобство пользователя.