Bazaprogram.ru

Новости из мира ПК
9 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel преобразовать текст в число

Vba excel преобразовать текст в число

На этом шаге мы перечислим функции преобразования форматов .

Преобразование строки в число и обратно осуществляют следующими функциями.

Таблица 1. Преобразование строки в число и обратно
ФункцияНазначение
Val ( строка )Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа
Str ( число )Возвращает значение типа Variant (String) , являющееся строковым представлением числа

В качестве допустимого десятичного разделителя функция Str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию CStr , указанную в конце этого шага.

Чтобы представить числовое значение как дату, время, денежное значение или в специальном формате, следует использовать функцию Format .

Функция Format возвращает значение типа Variant (String) , содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата. Синтаксис:

При построении пользовательского числового формата возможно использование следующих символов.

Таблица 2. Символы, используемые в числовом формате
СимволНазначение
Резервирует позицию цифрового разряда. Отображает цифру или нуль. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится 0, функция отображает эту цифру аргумента, если нет — в этой позиции отображается нуль
#Резервирует позицию цифрового разряда. Отображает цифру или ничего не отображает. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится #, функция отображает эту цифру аргумента, если нет — в исходной позиции не отображается ничего. Действие данного символа аналогично действию 0, за исключением того, что лидирующие нули не отображаются
. ( точка )Резервирует позицию десятичного разделителя. Указание точки в строке формата определяет, сколько разрядов необходимо отображать слева и справа от десятичной точки
%Резервирует процентное отображение числа
,Разделитель разряда сотен от тысяч
:Разделитель часов, минут и секунд в категории форматов Время (Time)
/Разделитель дня, месяца и года в категории форматов Дата (Date)
E+, E-, e+, e-Разделитель мантиссы и порядка в экспоненциальном формате

Кроме функций Val и Str в VBA имеются следующие функции преобразования типов выражений из данного в указанный.

Таблица 3. Функции преобразования форматов
ФункцияТип, в который преобразуется выражение
CBool ( Выражение )Boolean
CByte ( Выражение )Byte
CCur ( Выражение )Currency
CDate ( Выражение )Date
СDbl ( Выражение )Double
CDec ( Выражение )Decimal
CInt ( Выражение )Integer
CLng ( Выражение )Long
CSng ( Выражение )Single
CVar ( Выражение )Variant
CStr ( Выражение )String

На следующем шаге мы рассмотрим функции обработки строк .

Функция VAL в VBA Excel или как преобразовать TextBox в число (цифру).

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

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

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

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

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

  1. Private Sub CommandButton1_Click()
  2. Dim i, b As String
  3. i = TextBox1.Value
  4. b = TextBox2.Value
  5. If i
  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

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

Применим функцию 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
  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 работают корректно, как показано на скриншоте далее.

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

Каждая функция приводит выражение к определенному тип данных.

Обязательный аргумент выражениеАргумент — это любое строковое выражение или числовое выражение.

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

Тип возвращаемого значения

Диапазон аргумента выражение

Любое допустимое строковое или числовое выражение.

От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.

Любое допустимое выражение даты.

От -1,79769313486231E308 до
-4,94065645841247E-324 для отрицательных значений и от 4,94065645841247E-324 до 1,79769313486232E308 для положительных.

+/-79 228 162 514 264 337 593 543 950 335 для чисел без дробной части. Для чисел с 28 десятичными знаками допустимый диапазон составляет
+/-7,9228162514264337593543950335. Наименьшее допустимое ненулевое число — 0,0000000000000000000000000001.

От -32 768 до 32 767, дробная часть округляется.

От -2 147 483 648 до 2 147 483 647, дробная часть округляется.

От -3,402823E38 до -1,401298E-45 для отрицательных значений и от 1,401298E-45 до 3,402823E38 для положительных.

Результат, возвращаемый функцией CStr, зависит от аргумента выражение.

Тот же диапазон, что и Double для чисел. Тот же диапазон, что и в качестве строки для нечисловых значений.

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

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

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

Если дробная часть целого числа строго равна 0,5, функции CInt и CLng всегда округляют результат до ближайшего четного числа. Например, 0,5 округляется до 0, а 1,5 — до 2. В отличие от функций CInt и CLng, в функциях Fix и Int дробная часть не округляется, а отбрасывается. Кроме того, функции Fix и Int всегда возвращают значение того же типа, что и переданное им выражение.

Для определения возможности преобразования даты в дату или время используется функция IsDate. Функция CDate распознает литералы даты и времени, а также некоторые числа, которые находятся в диапазоне допустимых дат. При преобразовании числа в дату преобразуется целая часть числа. Дробная часть преобразуется во время суток, начиная с полуночи.

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

Функция CVDate предназначена для обеспечения совместимости с предыдущими версиями Visual Basic. Синтаксис функции CVDate идентичен синтаксису функции CDate, однако функция CVDate возвращает не результат типа Date, а результат типа Variant с подтипом Date. Поскольку теперь реализован встроенный тип Date, необходимость в функции CVDate отпадает. Того же результата можно добиться, преобразовав выражение в тип Date и присвоив это значение переменной типа Variant. Этот способ позволяет преобразовать все прочие встроенные типы в эквивалентные им подтипы Variant.

Примечание: Функция CDec не возвращает отдельный тип данных. Вместо этого она всегда возвращает результат типа Variant, значение которого преобразовано в подтип Decimal.

Примеры запросов

Выберите Салеприце, Финалприце, CBool (Салеприце>Финалприце) как Выражение1 из Продуктсалес;

Возвращает значение «Салеприце», «Финалприце» и определяет, является ли Салеприце больше конечной цены. Возвращает «-1», если истина и «0», если ложь.

ВЫБЕРИТЕ ProductID, CByte (количество) как Выражение1 из Продуктсалес;

Возвращает значение «ProductID», преобразует значения в поле «количество» в байтовый формат, а в столбце Выражение1 — на «ProductID» — преобразует значения из поля «количество» в денежный формат и выводится в столбце «выражение1».

ВЫБЕРИТЕ ProductID, CDate (Датеофсале) как Выражение1 из Продуктсалес;

Возвращает «ProductID», преобразует значения в поле «Датеофсале» в формат даты и выводит в столбец Выражение1.

ВЫБЕРИТЕ ProductID, CDbl (скидка) как Выражение1 из Продуктсалес;

Возвращает слово «ProductID», преобразует значения из поля «скидка» в двойной формат и выводит его в столбце Выражение1.

ВЫБЕРИТЕ ProductID, CInt (скидка) как Выражение1 из Продуктсалес;

Возвращает «ProductID», преобразует значения из поля «скидка» в целочисленный формат и отображает в столбце «выражение1».

ВЫБЕРИТЕ ProductID, CLng (скидка) как Выражение1 из Продуктсалес;

Возвращает «ProductID», преобразует значения в поле «скидка» в длинный формат и выводит его в столбце «выражение1».

ВЫБЕРИТЕ ProductID, CSng (скидка) как Выражение1 из Продуктсалес;

Возвращает «ProductID», преобразует значения из поля «скидка» в один формат и выводится в столбце «выражение1».

ВЫБЕРИТЕ ProductID, CStr (скидка) как Выражение1 из Продуктсалес;

Возвращает «ProductID», преобразует значения в поле «скидка» в строковый формат и выводит его в столбце Выражение1.

ВЫБЕРИТЕ ProductID, CVar (скидка) как Выражение1 из Продуктсалес;

Возвращает «ProductID», преобразует значения в поле «скидка» в Double для числовых значений и строк для нечисловых значений.

Примеры VBA

Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.

Функция CBool

Совет: В Access 2010 и более поздних версиях есть построитель выражений с поддержкой IntelliSense, который помогает создавать выражения.

В этом примере функция CBool используется для преобразования выражения в тип Boolean. Если выражение разрешается в ненулевое значение, функция CBool возвращает значение True; в противном случае она возвращает значение False.

Функция CByte

В этом примере функция CByte используется для преобразования выражения в тип Byte.

Функция CCur

В этом примере функция CCur используется для преобразования выражения в тип Currency.

Функция CDate

В этом примере функция CDate используется для преобразования выражения в тип Date. Как правило, не рекомендуется определять дату и время в виде строк (как показано в этом примере). Вместо этого пользуйтесь литералами даты и времени, например #2/12/1969# и #4:45:23 PM#.

Функция CDbl

В этом примере функция CDbl используется для преобразования выражения в тип Double.

Функция CDec

В этом примере функция CDec используется для преобразования выражения в тип Decimal.

Функция CInt

В этом примере функция CInt используется для преобразования выражения в тип Integer.

Функция CLng

В этом примере функция CLng используется для преобразования выражения в тип Long.

Функция CSng

В этом примере функция CSng используется для преобразования выражения в тип Single.

Функция CStr

В этом примере функция CStr используется для преобразования выражения в тип String.

Функция CVar

В этом примере функция CVar используется для преобразования выражения в тип Variant.

Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

VBA — как преобразовать значение ячейки из текста в число

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

Я попытался преобразовать эти данные в числа с помощью этого кода.

Он сделал свою работу правильно (или мне так кажется), но я все еще не могу работать с этими данными, как с числами, но Excel говорит мне, что он хранится как число.

Но когда я проверяю его с помощью формулы =ISTEXT() , он всегда показывает мне TRUE

Не могли бы вы помочь мне с этим, пожалуйста? Все учебники и советы, которые я нашел в Google, были через формирующие ячейки или =VALUE() , но VALUE fucntion не работает для меня, он показывает мне #VALUE .

Спасибо Вам заранее!

6 Ответов

вы должны заменить «,»

Есть и другое решение:

Не эквивалентное vba решение состоит в том, чтобы ввести «1» в ячейку, скопировать эту ячейку, выбрать диапазон, который вы хотите преобразовать в числа, щелкнуть правой кнопкой мыши и нажать Paste Special -> Multiply.

Это позволит оставить все значения в этом диапазоне в виде чисел без изменения формата. Проверено с помощью ISTEXT.

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

Сначала проверьте, что вся соответствующая область настроена на числовой формат.

Выберите соответствующий регион и сделайте глобальную замену ни за что («space», чтобы «оставить пустым»). Затем в зависимости от вашего locale попробуйте глобальную замену , на . .

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

Если это не работает, переключите . обратно на , и повторите специальную вставку.

Его запятая, должно быть . так 405,90 = 405.90

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

Высветите цифры, которыми вы располагаете, до «fix» и бегите:

Похожие вопросы:

Я хочу получить форматированный текст ячейки excel как RTF, используя VBA (для хранения форматированного текста в базе данных). Если невозможно получить текст как RTF, как я могу сохранить.

Доброе Утро Всем, Сегодня я придумал новое назначение преобразования текста в число автоматически по кодам VBA. Например, ‘ 1233 нужно преобразовать в 1233 и (1234) нужно преобразовать в -1234 без.

Я ищу простой Excel VBA или формулу, которая может преобразовать всю строку в Excel из числа, хранящегося в виде текста в фактическое число по причинам vlookup. Может ли кто-нибудь указать мне в.

Можно ли взять только первые две строки из обернутой текстовой ячейки через код VBA? Например, обернутая текстовая ячейка имеет значение как: aaaaaaa bbbbbbb ccccccc ddddddd Таким образом, ячейка.

Если у меня есть текст в ячейках, которые я хочу преобразовать в числа, я обычно пишу маленькие подводные лодки, такие как: Sub ConvertToNumber() With ActiveCell .NumberFormat = General .Value =.

Я пытаюсь сравнить значение ячейки (всегда число) с переменной итерации в цикле for, но по какой-то причине vba говорит, что это недопустимый вызов или аргумент. Я новичок в vba, поэтому любая.

Как получить значение ячейки Excel в VBA с одинарной кавычкой, если в начале текста. Например. Ячейка A1 имеет значение ‘ 123. Я получаю значение 123 только в VBA. Мне нужен 123-й .

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

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

ХАЙ я хочу преобразовать значение текста ячейки в число в Excel, используя POI API. текстовое значение ячейки, например ‘2,345’, преобразуется в число. Как я могу это сделать? если кто-то столкнулся.

Читать еще:  Легенда диаграммы в excel это
Ссылка на основную публикацию
Adblock
detector