Как в vba excel преобразовать строку в число
Эти функции компилируются встроенным, то есть код преобразования является частью кода, который вычисляет выражение. Иногда нет вызова процедуры для выполнения преобразования, что повышает производительность. Каждая функция приводит выражение к определенному типу данных.
Синтаксис
Часть
expression
Обязательный. Любое выражение исходного типа данных.
Тип данных возвращаемого значения
Имя функции определяет тип данных возвращаемого значения, как показано в следующей таблице.
1 дробная часть может подвергаться специальному типу округления, называемому банковским округлением. Дополнительные сведения см. в разделе "Примечания".
Комментарии
начиная с Visual Basic 15,8, производительность преобразования с плавающей запятой в целое число оптимизируется при передаче Single значения или Double , возвращаемого следующими методами, в одну из целочисленных функций преобразования ( CByte , CShort , CSByte CLng CUShort CInt CUInt . CULng ):
Такая оптимизация позволяет выполнять код, выполняющий большое количество целочисленных преобразований, в два раза быстрее. В следующем примере демонстрируются эти оптимизированные преобразования с плавающей запятой в целые числа:
Поведение
Приведение. В общем случае можно использовать функции преобразования типов данных для приведения результата операции к конкретному типу данных, а не по типу данных по умолчанию. Например, используйте CDec для принудительного выполнения десятичных арифметических операций в случаях, когда обычно выполняется операция с одиночной точностью, двойной точностью или целочисленной.
Неудачные преобразования. Если переданный функции объект expression находится вне диапазона типа данных, в который она должна быть преобразована, возникает исключение OverflowException .
Дробные части. При преобразовании нецелочисленного значения в целочисленные функции целочисленного преобразования ( CByte , CInt , CLng , CSByte CUInt CShort . CULng и CUShort ) удаляют дробную часть и округляют значение до ближайшего целого.
Если дробная часть равна точности 0,5, функции целочисленного преобразования округляют его до ближайшего четного целого числа. Например, 0,5 округляется до 0, а 1,5 и 2,5 оба округляются в 2. Иногда это называется округлением банкаи предназначено для компенсации смещения, которое может накапливаться при одновременном добавлении многих таких чисел.
CInt и CLng отличаются от Int функций и Fix , которые усекаются, а не округляют дробную часть числа. Кроме того, Fix и всегда возвращают значение того же типа данных, что и Int при передаче.
Преобразования даты и времени. IsDateИспользуйте функцию, чтобы определить, можно ли преобразовать значение в дату и время. CDate распознает литералы даты и литералы времени, но не числовые значения. чтобы преобразовать значение Date Visual Basic 6,0 Date в значение в Visual Basic 2005 или более поздней версии, можно использовать DateTime.FromOADate метод.
Чувствительность языка и региональных параметров. Функции преобразования типов, включающие строки, выполняют преобразования в соответствии с текущими параметрами языка и региональных параметров для приложения. Например, CDate распознает форматы даты в соответствии с настройками языкового стандарта системы. Необходимо указать день, месяц и год в правильном порядке для вашего языкового стандарта, иначе Дата может интерпретироваться неправильно. Длинный формат даты не распознается, если он содержит строку дня недели, например "среда".
если необходимо преобразовать в строковое представление значения или из него в формате, отличном от указанного в вашем языковом стандарте, то нельзя использовать функции преобразования типа Visual Basic. Для этого используйте ToString(IFormatProvider) методы и Parse(String, IFormatProvider) типа этого значения. Например, используйте Double.Parse при преобразовании строки в Double и используйте Double.ToString при преобразовании значения типа Double в строку.
CType Function
Функция CType принимает второй аргумент, и expression применяет к typename , где typename может быть любым типом данных, структурой, классом или интерфейсом, к которому существует допустимое преобразование.
Сравнение CType с другими ключевыми словами преобразования типов см. в разделе Оператор CType и Оператор TryCast.
Пример CBool
В следующем примере функция используется CBool для преобразования выражений в Boolean значения. Если результат выражения равен ненулевому значению, CBool функция False возвращает True ; в противном случае возвращается значение.
Пример CByte
В следующем примере функция используется CByte для преобразования выражения в Byte .
Пример CChar
В следующем примере функция используется CChar для преобразования первого символа String выражения в Char тип.
Пример для CDate
Пример с CDbl
Пример CDec
В следующем примере функция используется CDec для преобразования числового значения в Decimal .
Пример функции CInt
В следующем примере функция используется CInt для преобразования значения в Integer .
Пример с CLng
В следующем примере функция используется CLng для преобразования значений в Long .
Пример CObj
В следующем примере функция используется CObj для преобразования числового значения в Object . Object Сама переменная содержит только 4-байтовый указатель, указывающий на Double присвоенное ему значение.
Пример Ксбите
В следующем примере функция используется CSByte для преобразования числового значения в SByte .
Пример CShort
В следующем примере функция используется CShort для преобразования числового значения в Short .
Пример CSng
В следующем примере функция используется CSng для преобразования значений в Single .
Пример функции CStr
В следующем примере функция используется CStr для преобразования числового значения в String .
В следующем примере функция используется CStr для преобразования Date значений в String значения.
CStr всегда отображает Date значение в стандартном коротком формате для текущего языкового стандарта, например "6/15/2003 4:35:47 PM". CStr Однако подавляет CStr 1/1/0001 для даты и 00:00:00 для времени.
Дополнительные сведения о значениях, возвращаемых CStr , см. в разделе CStr .
Пример Куинт
В следующем примере функция используется CUInt для преобразования числового значения в UInteger .
Пример Кулнг
В следующем примере функция используется CULng для преобразования числового значения в ULong .
Пример Кушорт
В следующем примере функция используется CUShort для преобразования числового значения в UShort .
Каждая функция приводит выражение к нужному типу данных.
Синтаксис
Обязательный аргумент выражение — это любое строковое или числовое выражение.
Возвращаемые типы
Тип возвращаемого значения определяется по имени функции в соответствии со следующей таблицей:
Функция | Тип возвращаемых данных | Диапазон выражения-аргумента |
---|---|---|
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, дробная часть округляется. |
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-разрядных систем; дробная часть округляется в обоих типах систем. |
CSng | Single | От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений. |
CStr | String | Результат, возвращаемый функцией CStr, зависит от аргумента выражение. |
CVar | Variant | Диапазон совпадает с типом Double для числовых значений и с типом String для нечисловых значений. |
Примечания
Если выражение, переданное в функцию, не входит в диапазон типа, в который преобразуются данные, происходит ошибка.
Функции преобразования должны использоваться для явного присвоения типа LongLong (включая тип LongPtr на 64-разрядных платформах) меньшим целочисленным типам. Неявные преобразования типа LongLong в меньшие целочисленные типы не допускаются.
Как правило, функции преобразования типов используются в тексте программ для того, чтобы указать, что результатом той или иной операции должны стать данные определенного типа, а не типа, заданного по умолчанию. Например, с помощью функции CCur можно принудительно перейти к вычислениям в денежном формате в тех случаях, в которых обычно используются действия с числами с обычной точностью, двойной точностью или с целыми числами.
Функции преобразования типа данных следует использовать вместо функции Val для преобразования типов данных в приложениях, поддерживающих различные региональные стандарты. Например, при использовании функции CCur десятичные разделители, разделители групп разрядов и параметры денежных единиц распознаются в соответствии с языковыми и региональными параметрами компьютера.
Если дробная часть целого числа строго равна 0,5, функции CInt и CLng всегда округляют результат до ближайшего четного числа. Например, 0,5 округляется до 0, а 1,5 — до 2. Функции CInt и CLng отличаются от функций Fix и Int, которые отбрасывают дробную часть числа, а не округляют ее. Кроме того, функции Fix и Int всегда возвращают значение того же типа, что и переданное им выражение.
Для определения возможности преобразования date в дату или время используется функция IsDate. Функция CDate распознает литералы даты и времени, а также некоторые числа, которые находятся в диапазоне допустимых дат. При преобразовании числа в дату преобразуется целая часть числа. Дробная часть преобразуется во время суток, начиная с полуночи.
Функция CDate распознает форматы даты в соответствии с национальной настройкой системы. Если формат передаваемого аргумента не соответствует распознаваемым настройкам даты, функция не сможет определить правильный порядок дней, месяцев и лет. Кроме того, длинный формат даты не распознается, если в нем содержится строка дня недели.
Функция CVDate предназначена для обеспечения совместимости с предыдущими версиями Visual Basic. Синтаксис функции CVDate не отличается от синтаксиса функции CDate; однако функция CVDate возвращает тип Variant, подтипом которого является тип Date, а не собственно тип Date. Поскольку теперь реализован встроенный тип Date, необходимость в функции CVDate отпадает. Такой же результат можно получить, если преобразовать выражение в тип Date и присвоить его типу Variant. Этот способ позволяет преобразовать все прочие встроенные типы в эквивалентные им подтипы Variant.
Функция CDec не возвращает отдельный тип данных. Вместо этого она всегда возвращает результат типа Variant, значение которого преобразовано в подтип Decimal.
Пример функции CBool
В этом примере функция CBool используется для преобразования выражения в тип Boolean. Если выражение разрешается в ненулевое значение, функция CBool возвращает значение True, в противном случае она возвращает значение False.
Пример функции CByte
В этом примере функция CByte используется для преобразования выражения в тип Byte.
Пример функции CCur
В этом примере функция CCur используется для преобразования выражения в тип Currency.
Пример функции CDate
Пример функции CDbl
В этом примере функция CDbl используется для преобразования выражения в тип Double.
Пример функции CDec
В этом примере функция CDec используется для преобразования выражения в тип Decimal.
Пример функции CInt
В этом примере функция CInt используется для преобразования выражения в тип Integer.
Пример функции CLng
В этом примере функция CLng используется для преобразования выражения в тип Long.
Пример функции CSng
В этом примере функция CSng используется для преобразования выражения в тип Single.
Пример функции CStr
В этом примере функция CStr используется для преобразования выражения в тип String.
Пример функции CVar
В этом примере функция CVar используется для преобразования выражения в тип Variant.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Функции преобразования типов данных в 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.
Format – это функция, которая преобразует число, дату или строку в текст, отформатированный в соответствии с именованным выражением формата или инструкциями, составленными из специальных символов.
Синтаксис и параметры
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear])
- Expression – любое допустимое выражение (переменная), возвращающее числовое значение или строку (обязательный параметр).
- FormatExpression – выражение формата, именованное или содержащее инструкции из специальных символов (необязательный параметр).
- FirstDayOfWeek – константа, задающая первый день недели (необязательный параметр).
- FirstWeekOfYear – константа, задающая первую неделю года (необязательный параметр).
Именованные выражения форматов
Именные форматы даты и времени
Имя формата | Описание |
---|---|
General Date | Стандартное отображение даты и времени в соответствии с параметрами системы. |
Long Date | Длинный формат даты. |
Medium Date | Средний формат даты. |
Short Date | Краткий формат даты. |
Long Time | Длинный формат времени. |
Medium Time | Средний формат времени. |
Short Time | Краткий формат времени. |
Проверьте отображение даты и времени с использованием именованных форматов на вашем компьютере при помощи следующего кода VBA Excel:
Скорее всего, результат будет таким:
Именованные форматы чисел
Имя формата | Описание |
---|---|
General Number | Стандартное отображение числа без знака разделителя групп разрядов. |
Currency | Денежный формат. |
Fixed | Отображение числа без знака разделителя групп разрядов с двумя цифрами после разделителя целой и дробной части. |
Standard | Отображение числа со знаком разделителя групп разрядов и с двумя цифрами после разделителя целой и дробной части. |
Percent | Процентный формат: отображение числа, умноженного на 100, со знаком процента (%), добавленного справа. |
Scientific | Отображение числа в экспоненциальном виде. |
Yes/No | Возвращается «Нет», если число равно 0, иначе отображается «Да». |
True/False | Возвращается «Ложь», если число равно 0, иначе отображается «Истина». |
On/Off | Возвращается «Выкл», если число равно 0, иначе отображается «Вкл». |
Проверяем работу именованных форматов на числах 2641387.7381962 и 0 с помощью кода VBA Excel:
Получаем следующий результат:
Вместо вопросительного знака в отображении числа в формате Currency, по идее, должен быть знак валюты (₽ или руб.).
Специальные символы для выражений форматов
Символы для форматов даты и времени
Символ | Описание |
---|---|
Точка (.) | Разделитель компонентов даты (день, месяц, год). Используется при отображении месяца в виде числа. |
Пробел | Разделитель компонентов даты (день, месяц, год). Используется при отображении месяца прописью. |
Двоеточие (:) | Разделитель компонентов времени (часы, минуты, секунды). |
d | День в виде числа без нуля в начале (1–31). |
dd | День в виде числа с нулем в начале (01–31). |
m | Месяц в виде числа без нуля в начале (1–12). Если (m) следует после (h) или (hh), отображаются минуты (0–59). |
mm | Месяц в виде числа с нулем в начале (01–12). Если (mm) следует после (h) или (hh), отображаются минуты (00–59). |
mmm | Месяц прописью в сокращенном виде (янв–дек). |
mmmm | Полное название месяца (январь–декабрь). |
y | День года в виде числа (1–366). |
yy | Год в виде 2-значного числа (00–99). |
yyyy | Год в виде 4-значного числа (1900–9999). |
h | Часы в виде числа без нуля в начале (0–23). |
hh | Часы в виде числа с нулем в начале (00–23). |
n (m) | Минуты в виде числа без нуля в начале (0–59). |
nn (mm) | Минуты в виде числа с нулем в начале (00–59). |
s | Секунды в виде числа без нуля в начале (0–59). |
ss | Секунды в виде числа с нулем в начале (00–59). |
В этой таблице перечислены далеко не все символы для выражений форматов даты и времени. Вы можете ознакомиться со всеми символами, в том числе и для форматирования чисел, на сайте разработчика.
Примеры отображения даты с помощью разных по количеству наборов символа d:
Символы для числовых форматов
Примеры использования символов в выражениях числовых форматов VBA Excel:
Символы для текстовых форматов
Символ | Описание |
---|---|
At-символ (@) | Заполнитель для символов, отображающий знак или пробел. |
Амперсанд (&) | Заполнитель для символов, отображающий знак или ничего (пустая строка). |
Меньше ( <) | Принудительный перевод всех буквенных символов в нижний регистр. |
Больше (>) | Принудительный перевод всех буквенных символов в верхний регистр. |
Примеры использования символов в выражениях строковых форматов VBA Excel:
Форматы для различных значений одного выражения
Различные форматы для разных числовых значений
В выражении формата для чисел предусмотрено от одного до четырех разделов, отделяемых друг от друга точкой с запятой. Отображаемая строка зависит от значения, возвращенного параметром Expression функции Format.
Количество разделов | Результат форматирования |
---|---|
Один раздел | Выражение формата применяется ко всем значениям. |
Два раздела | Первый раздел применяется к положительным значениям и нулям, второй – к отрицательным значениям. |
Три раздела | Первый раздел применяется к положительным значениям, второй – к отрицательным значениям, третий – к нулям. |
Четыре раздела | Первый раздел применяется к положительным значениям, второй – к отрицательным значениям, третий – к нулям, четвертый – к значениям Null. |
Пример использования четырех разделов в выражении формата числовых значений:
Можно преобразовать числовое значение типа, Boolean или значения даты и времени в String . Можно также преобразовать в обратном направлении — от строкового значения к числовому, Boolean или Date — при условии, что содержимое строки может интерпретироваться как допустимое значение целевого типа данных. Если они не могут, возникает ошибка времени выполнения.
Преобразования для всех этих назначений в любом направлении представляют собой сужающие преобразования. Следует использовать ключевые слова преобразования типов ( CBool , CByte , CDate , CInt CSByte CDbl CDec CLng . CShort , CUInt CSng CStr . CULng , CUShort и CType ). FormatФункции и Val предоставляют дополнительный контроль над преобразованиями между строками и числами.
Если вы определили класс или структуру, можно определить операторы преобразования типов между String и типом класса или структуры. Дополнительные сведения см. в разделе How to: Define a Conversion Operator.
Преобразование чисел в строки
Функцию можно использовать Format для преобразования числа в отформатированную строку, которая может включать не только соответствующие цифры, но и символы форматирования, такие как знак валюты (например $ ,), разделители тысяч или Format ( , например,), и десятичный разделитель ( . например,). Format автоматически использует соответствующие символы в соответствии с Format параметрами, заданными на панели управленияWindows.
Обратите внимание, что оператор конкатенации ( & ) может преобразовать число в строку неявным образом, как показано в следующем примере.
Преобразование строк в числа
Функцию можно использовать Val для явного преобразования цифр из строки в число. Val считывает строку, пока не встретится символ, отличный от цифры, пробела, табуляции, перевода строки или точки. Последовательности " & O" и " & H" изменяют основу системы счисления и завершают проверку. До тех пор пока не будет остановлено чтение, Val преобразует все соответствующие символы в числовое значение. Например, следующая инструкция возвращает значение 141.825 .
Val(" 14 1.825 miles")
когда Visual Basic преобразует строку в числовое значение, она использует региональные параметры , заданные на панели управления Windows, для интерпретации разделителя групп разрядов, десятичного разделителя и символа валюты. Это означает, что преобразование может быть выполнено в одном параметре, но не в другом. Например, допустим в английской (США) национальной настройке, "$14.20" но не на французском языке.
Читайте также: