Как преобразовать текстовые значения в числовые

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

Это достаточно легко исправить вручную, нажав на кнопку Текст по столбцам на вкладке Данные. Нет необходимости проходить через все шаги в этом мастере; просто нажмите на кнопку Готово, чтобы применить исправление.

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

Как макрос работает

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

Код макроса

Sub PreobrazovatTekstVChislo()
'Шаг 1: Объявляем переменные
Dim MyRange As Range
Dim MyCell As Range
'Шаг 2: Сохраните книгу прежде, чем изменить ячейки?
Select Case MsgBox("Перед изменением ячеек. " & _
"Сохранить книгу?", vbYesNoCancel)
Case Is = vbYes
ThisWorkbook.Save
Case Is = vbCancel
Exit Sub
End Select
'Шаг 3:Определяем целевой диапазон
Set MyRange = Selection
'Шаг 4: запускаем цикл по диапазону
For Each MyCell In MyRange
'Шаг 5: Возврат в исходное значение ячейки
If Not IsEmpty(MyCell) Then
MyCell.Value = MyCell.Value
End If
'Шаг 6: Получаем следующую ячейку в диапазоне
Next MyCell
End Sub

Как этот код работает

  1. Шаг 1 объявляет две переменные объекта Range.
  2. При выполнении макроса, он уничтожает стек отката.
  3. Шаг 3 заполняет переменную MyRange с целевым диапазоном.
  4. Шаг 4 начинает цикл через каждую ячейку в целевом диапазоне, активизируя каждую ячейку, через которую мы проходим.
  5. После того, как ячейка активируется, макрос использует функцию IsEmpty, чтобы убедиться, что ячейка не пуста. Мы делаем это, чтобы немного сэкономить на производительности,
    пропуская пустые ячейки. Затем мы просто преобразуем ячейки к ее собственному значению. Это устраняет любое несоответствие форматирования.
  6. Шаг 6 повторяет цикл, чтобы получить следующую ячейку. После просмотра всех ячеек в целевом диапазоне макрос заканчивается.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11 на клавиатуре.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.
Оцените статью
Добавить комментарий