Зміст
У цій статті ми розглянемо кілька способів перетворення рядка в число в Excel VBA. На прикладах коду VBA ми побачимо, як використовувати вбудовані функції і створити власну функцію з їх допомогою для перетворення рядка в число.
Завантажити Практичний посібник
Завантажте цей практичний посібник, щоб потренуватися, поки ви читаєте цю статтю.
Перетворення рядка в число.xlsm3 способи перетворення рядка в число в Excel VBA
1. Перетворення рядка в число з використанням функцій приведення типів
В Excel передбачено декілька вбудованих функції перетворення типів Ми можемо використовувати їх в нашому VBA коді для легкого перетворення з рядкового типу даних в інші типи даних.
1.1 Приведення рядка до цілого числа
Для конвертації рядок до ціле число ми можемо використовувати Функція CInt в нашому кодексі. Функція CInt приймає тільки один аргумент і це має бути числове значення Спробуємо виконати наступний код у візуальному редакторі коду.
Sub StringToNumber() MsgBox CInt(12.3) End Sub
Преса F5 до біг в "Урядовому кур'єрі". код Вихідні дані наведено в таблиці MsgBox .
Функція CInt перетворений в "Урядовому кур'єрі". числовий рядок значення ("12.3" ) до ціле число 12.
Щоб дізнатися більше про Функція CInt виконайте в редакторі коду наступний код і спостерігати в "Урядовому кур'єрі". результати .
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CInt(Cells(i, 2)) Next End Sub
На сьогоднішній день, на жаль, це не так. вихід полягає в наступному скріншот .
Пояснення коду
У цьому коді ми використовували Для...Наступний цикл для застосування Функція CInt на рядках комірок B3:B7. На сьогоднішній день, на жаль, це не так. результати друкуються в клітинках C3:C7. Ми використовували Функціонування клітин вказати вхідні значення та місце виведення вихідних значень.
Результати
Функція CInt конвертовано 25,5 до наступне ціле число 26 З іншого боку, це перераховано 10,3 до 10, а не 11 Коли десяткове числове значення менше .5, функція округляє в меншу сторону до того ж числа. десятковий числове значення рядка перетворюється на наступне ціле число номер, якщо він є що дорівнює або більше 0,5.
Примітка
Ціле значення має діапазон між -32,768 до 32,767 Якщо ми покладемо числове значення, яке дорівнює поза цим діапазоном , Excel покаже помилка .
1.2 Від рядка до довгого
На сьогоднішній день, на жаль, це не так. Функція CLng перетворює числове значення рядка в тип довгий тип даних Працює аналогічно функції CInt. Ключова відмінність полягає в тому, що вона діапазон яка знаходиться між -2,147,483,648 і 2,147,483,647.
Код для запуску знаходиться тут, нижче: Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub
Ось, клітини B3:B9 містять деякі числове значення рядка і перетворений l великі цифри знаходяться в камерах C3:C9. На сьогоднішній день, на жаль, це не так. Функція CLng перетворений -32800 і 32800 успішно до довгі числа який був узятий на озброєння Функція CInt не зміг. Але він також отримає помилка якщо на вході числове значення це поза зоною досяжності.
1.3 Рядок в десяткову систему числення
За допомогою Функція CDec ми можемо навертатися a числове значення рядка до десятковий тип даних. Виконати наступний код на навертатися в "Урядовому кур'єрі". числові значення у клітинах B3:B7 до десятковий тип даних.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CDec(Cells(i, 2)) Next End Sub
1.4 Перехід від рядка до одиниці
У даному прикладі ми перетворимо вхідні рядки в єдиний тип даних (Для цього нам потрібно використати функцію Функція CSng .
Єдиний тип даних має діапазони (i) -3.402823E38 до -1.401298E-45 для негативний цифри.
(ii) 1.401298E-45 до 3.402823E38 для позитивний цифри.
Запустити наступний код у редакторі Visual Basic.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub
У вихідних даних, клітинках B3:B9 містять деякі числове значення рядка, і конвертовані числа одиночних типів даних знаходяться в камерах C3:C9. Але він також отримає помилка якщо на вході числове значення це поза зоною досяжності.
1.5 Подвоєння рядка
У даному прикладі ми перетворимо вхідні рядки в тип даних double (Для цього нам потрібно використати функцію Функція CDbl .
Діапазон типів даних типу double (i) -1.79769313486231E308 до -4.94065645841247E-324 для негативний цифри.
(ii) 4.94065645841247E-324 до 1.79769313486232E308 для позитивний цифри.
Запустити наступний код у редакторі Visual Basic.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub
У вихідних даних, клітинках B3:B9 містять деякі числове значення рядка і конвертовані числа подвійного типу даних знаходяться в камерах C3:C9. Але він також отримає помилка якщо на вході числове значення це поза зоною досяжності.
1.6 Перехід від рядка до валюти
На сьогоднішній день, на жаль, це не так. тип даних про валюту зручний, коли розрахунки пов'язані з гроші Більше того, якщо ми хочемо більшої точності в фіксований - точка розрахунок то використання валютного типу даних є гарним вибором. Нам потрібно використовувати тип даних Функція CCur щоб перетворити рядок в рядок тип даних про валюту Тип даних діапазони від -922,337,203,685,477.5808 до 922,337,203,685,477.5808.
Код на навертатися числове значення рядка клітин B3:B7 до тип даних про валюту у клітинах C3:C7 знаходиться тут, нижче.
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CCur(Cells(i, 2)) Next End Sub
1.7 Рядок в байт
На сьогоднішній день, на жаль, це не так. Функція CByte конвертує числові значення рядка в тип байтовий тип даних яка варіюється від від 0 до 255.
Код полягає в наступному :
Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CByte(Cells(i, 2)) Next End Sub
У вихідних даних, клітинках B3:B9 містять деякі числове значення рядка, і конвертовані числа байтового типу даних знаходяться в камерах C3:C9. Але він також отримає помилка якщо на вході числове значення це поза зоною досяжності.
Читати далі: Як перетворити рядок у довгий за допомогою VBA в Excel
Схожі читання
- Перетворення рядка в подвійний в Excel VBA (5 способів)
- Як перетворити текст у число за допомогою Excel VBA (3 приклади з макросами)
- Виправлення помилки перетворення в число в Excel (6 способів)
- Як перетворити наукові позначення в цифри в Excel (7 способів)
2. Використання користувацької функції VBA для перевірки та перетворення рядка в число в Excel
На цій ілюстрації ми збираємося зробити спеціальна функція для перетворення рядків у числа. Тоді ми можемо використання цей спеціальна функція в нашому робочий аркуш як вбудована функція У цьому прикладі ми будемо використовувати Функція CInt до навертатися рядки до цілі числа при створенні нестандартна функція. Ми також могли б використати всі інші функції описані в спосіб 1 перетворити струни до різні типи даних Для цього виконайте наведені нижче кроки.
Сходинки:
- Тут, в камерах B3:B7, маємо деякі числові значення рядків.
- Тепер у візуальному базовому редакторі, копія і паста наступний код, а потім натисніть Ctrl + S до заощаджувати
Function StringToNumber(inputStr) Dim convertedNum As Variant If IsNumeric(inputStr) Then If IsEmpty(inputStr) Then convertedNum = "-" Else convertedNum = CInt(inputStr) End If Else convertedNum = "-" End If StringToNumber = convertedNum End Function
- У камері C3 , почніть друкувати в "Урядовому кур'єрі". назва функції ( StringToNumber ). Excel буде автоматично запропонувати в "Урядовому кур'єрі". функція для використання. Преса в "Урядовому кур'єрі". Клавіша Tab для входу в функцію.
- Покладіть посилання на комірку B3 як єдиний аргумент.
- Тепер натисніть Увійдіть після закриття круглих дужок.
- Знайдіть Ручка наповнення на правий нижній кут осередку C3 до подавати заявку функцію до комірок C4:C7.
- Кінцевим результатом є шукані цілі числа з рядкових значень.
3. Код VBA для перетворення виділеного діапазону комірок в числа в Excel
У цій ілюстрації ми перетворимо діапазон з виділені комірки що містить рядкові значення до цілих чисел. Якщо будь-яка комірка містить нечисловий значення в ньому, то на виході буде тире (-) лінія натомість Слідкуйте за кроки :
- Виділити комірки B3:B6 маючи числові рядки цінності та B7 в якому міститься нечисловий
- В рамках проекту Редактор Visual Basic копія і паста наступне код .
Sub StringToNumber() Dim convertedNum As Variant For Each cell In Selection If IsNumeric(cell) Then If IsEmpty(cell) Then convertedNum = "-" Else convertedNum = CInt(cell) End If Else convertedNum = "-" End If With cell .Value = convertedNum.HorizontalAlignment = xlCenter End With Next cell End Sub
- Тепер натисніть F5 до біг в "Урядовому кур'єрі". вихід про що свідчить наступне скріншот .
Примітки
- Ми використовували isЧислова функція в 2-й і 3-й методи у нашому VBA-коді, який перевіряє, чи можна вираз перетворити в число.
- В спосіб 1 ми використовували вбудовані функції (CInt, CDbl, CSng.....) для перетворення числових рядкових значень до цифри Але якщо є нечислове значення він покаже помилка невідповідності .
Висновок
Тепер ми знаємо, як конвертувати рядкові значення в числа в Excel. Сподіваємося, це допоможе вам більш впевнено користуватися цим функціоналом. Якщо у вас виникнуть питання або пропозиції, не забувайте залишати їх у полі для коментарів нижче.