Vba excel число сохранено как текст

Обновлено: 07.07.2024

Иногда значения в ваших таблицах Excel выглядят как числа, но их нельзя сложить или перемножить, они приводят к ошибкам в формулах. Общая причина этого - числа, записанные как текст. Во многих случаях Microsoft Excel достаточно умен, чтобы автоматически преобразовывать цифровые символы, импортированные из других программ, в обычные числа. Но иногда числа остаются отформатированными в виде текста, что вызывает множество проблем в ваших электронных таблицах.

Перестает правильно работать сортировка данных, поскольку числовые и текстовые значения упорядочиваются по-разному. Функции поиска, подобные ВПР, также не могут найти нужные значения (подробнее об этом читайте – Почему не работает ВПР?). Подсчет по условиям СУММЕСЛИ и СЧЁТЕСЛИ даст неверные результаты. Если они находятся среди «нормальных» чисел, то функция СУММ их проигнорирует, а вы этого даже не заметите. В результате – неверные расчеты.

Из этого материала вы узнаете, как преобразовать строки в «настоящие» числа.

Как определить числа, записанные как текст?

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

индикатор ошибки

В некоторых случаях индикатор ошибки не отображается для чисел, записанных в виде текста. Но есть и другие визуальные индикаторы текстовых чисел:

Число

Строка (текстовое значение)

    • По умолчанию с выравниванием по правому краю.
    • Если выбрано несколько ячеек, в строке состояния отображается «Среднее», «Количество» и «Сумма» .
    • По умолчанию с выравниванием по левому краю.
    • Если выбрано несколько ячеек, строка состояния показывает только Количество .
    • В поле Числовой формат отображается текстовый формат (во многих случаях, но не всегда).
    • В строке формул может быть виден начальный апостроф.
    • Зелёный треугольник в левом верхнем углу.

На изображении ниже вы можете видеть текстовые представления чисел справа и реальные числа слева:


Есть несколько разных способов изменить текст на число Excel. Ниже мы рассмотрим их, начиная с самых быстрых и простых. Если простые методы не работают для вас, пожалуйста, не расстраивайтесь. Нет проблем, которые невозможно преодолеть. Просто нужно попробовать другие способы.

Используем индикатор ошибок.

Если в ваших клетках отображается индикатор ошибки (зеленый треугольник в верхнем левом углу), преобразование выполняется одним щелчком мыши:

  1. Выберите всю область, где цифры сохранены как текст.
  2. Нажмите предупреждающий знак и затем - Преобразовать в число.


Таким образом можно одним махом преобразовать в числа весь столбец. Просто выделите всю проблемную область, а затем жмите восклицательный знак.

Смена формата ячейки.

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

Итак, первый быстрый способ видоизменения заключается в следующем:

Или же можно воспользоваться контекстным меню, вызвав его правым кликом мышки.

как изменить формат

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

Этот способ не слишком удобен и достался нам «в наследство» от предыдущих версий Excel, когда еще не было индикатора ошибки в виде зелёного уголка.

Примечание. Этот метод не работает в некоторых случаях. Например, если вы примените текстовый формат, запишете несколько цифр, а затем измените формат на «Числовой». Тут ячейка все равно останется отформатированной как текст.

То же самое произойдёт, если перед цифрами будет стоять апостроф. Это однозначно указывает Excel, что записан именно текст и ничто другое.

Совет. Если зеленых уголков нет совсем, то проверьте - не выключены ли они в настройках вашего Excel (Файл - Параметры - Формулы - Числа, отформатированные как текст или с предшествующим апострофом).

Специальная вставка.

По сравнению с предыдущими методами этот метод требует еще нескольких дополнительных шагов, но работает почти на 100%.

  1. Выделите клетки таблицы с текстовым номером и установите для них формат «Общий», как описано выше.
  2. Скопируйте какую-нибудь пустую ячейку. Для этого либо установите в нее курсор и нажмите Ctrl + C , либо щелкните правой кнопкой мыши и выберите «Копировать» в контекстном меню.
  3. Выберите клетки таблицы, которые вы хотите трансформировать, щелкните правой кнопкой мыши и выберите «Специальная вставка». В качестве альтернативы, нажмите комбинацию клавиш Ctrl + Alt + V .
  4. В диалоговом окне «Специальная вставка» выберите «Значения» в разделе «Вставить» и затем «Сложить» в разделе «Операция».
  5. Нажмите ОК.

Если все сделано правильно, то ваши значения изменят выравнивание слева на правую сторону. Excel теперь воспринимает их как числа.

Инструмент «текст по столбцам».

Это еще один способ использовать встроенные возможности Excel. При использовании для других целей, например для разделения ячеек, мастер «Текст по столбцам» представляет собой многоэтапный процесс. А вот чтобы просто выполнить нашу метаморфозу, нажимаете кнопку Готово на самом первом шаге :)

  1. Выберите позиции (можно и весь столбец), которые вы хотите конвертировать, и убедитесь, что их формат установлен на Общий.
  2. Перейдите на вкладку «Данные», группу «Инструменты данных» и нажмите кнопку «Текст по столбцам» .
  3. На шаге 1 мастера распределения выберите «Сразделителями» в разделе «Формат исходных данных» и сразу чтобы завершить преобразование, нажмите «Готово» .

Это все, что нужно сделать!

Повторный ввод.

Если проблемных ячеек, о которых мы ведём здесь разговор, у вас не очень много, то, возможно, неплохим вариантом будет просто ввести их заново.

Для этого сначала установите их формат на «Обычный». Затем в каждую из них введите цифры заново.

Думаю, вы знаете, как корректировать ячейку — либо двойным кликом мышки, либо через клавишу F2 .

Но это, конечно, если таких «псевдо-чисел» немного. Иначе овчинка не стоит выделки. Есть много других менее трудоемких способов.

Преобразовать текст в число с помощью формулы

До сих пор мы обсуждали встроенные возможности, которые можно применить для перевода текста в число в Excel. Во многих ситуациях это может быть сделано быстрее с помощью формулы.

В Microsoft Excel есть специальная функция - ЗНАЧЕН (VALUE в английском варианте). Она обрабатывает как текст в кавычках, так и ссылку на элемент таблицы, содержащий символы для трансформирования.

Функция ЗНАЧЕН может даже распознавать набор цифр, включающих некоторые «лишние» символы.

Например, распознает цифры, записанные с разделителем тысяч в виде пробела:

Конвертируем число, введенное с символом валюты и разделителем тысяч:

Обе эти формулы возвратят число 1000.

Точно так же она расправляется с пробелами перед цифрами.

функция VALUE ЗНАЧЕН

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

Функция ЗНАЧЕН также пригодится, когда вы извлекаете что-либо из символьной строки с помощью одной из текстовых функций, таких как ЛЕВСИМВ, ПРАВСИМВ и ПСТР.

Например, чтобы получить последние 3 символа из A2 и вернуть результат в виде цифр, используйте следующее:

На приведенном ниже рисунке продемонстрирована формула трансформации:

конвертируем при помощи формулы

Если вы не обернете функцию ПРАВСИМВ в ЗНАЧЕН, результат будет возвращен в виде набора символов, что делает невозможным любые вычисления с извлеченными значениями.

Этот метод подходит, когда вы точно знаете, сколько символов и откуда вы желаете получить, а затем превратить их в число.

Математические операции.

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

Что это может быть? Например, сложение с нулём, умножение или деление на 1.

простейшие математические операции для превращения текста в числа

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

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

Удаление непечатаемых символов.

Когда вы копируете в таблицу Excel данные из других приложений при помощи буфера обмена (то есть Копировать – Вставить), вместе с цифрами часто копируется и различный «мусор». Так в таблице могут появиться внешне не видимые непечатаемые символы. В результате ваши цифры будут восприниматься программой как символьная строка.

Эту напасть можно удалить программным путем при помощи формулы. Аналогично предыдущему примеру, в С2 можно записать примерно такое выражение:

Поясню, как это работает. Функция ПЕЧСИМВ удаляет непечатаемые знаки. СЖПРОБЕЛЫ – лишние пробелы. Функция ЗНАЧЕН, как мы уже говорили ранее, преобразует текст в число.

Макрос VBA.

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

Нажмите сочетание клавиш Alt+F11 или откройте вкладку Разработчик (Developer) и нажмите кнопку Visual Basic. В появившемся окне редактора добавьте новый модуль через меню Insert - Module и скопируйте туда следующее небольшое выражение:

После этого закрываем редактор, выполнив нажатие стандартной кнопки закрытия в верхнем правом углу окна.

Что делает этот макрос?

Вы можете выделить несколько областей данных для конвертации (можно использовать мышку при нажатой клавише CTRL). При этом, если в ваших числах в качестве разделителя десятичных разрядов используется запятая, то она будет автоматически заменена на точку. Ведь в Windows чаще всего именно точка отделяет целую и дробную части числа. А при экспорте данных из других программ запятая в этой роли встречается почему-то очень часто.

Чтобы использовать этот код, выделяем область на рабочем листе, которую нужно преобразовать. Жмем на значок «Макросы», который расположен на вкладке «Разработчик» в группе «Код». Или нам поможет комбинация клавиш ALT+F8.

Открывается окно имеющихся макросов. Находим «Текст_в_число», указываем на его и жмем на кнопку «Выполнить».

Извлечь число из текстовой строки с помощью Ultimate Suite

Как вы уже убедились, не существует универсальной формулы Excel для извлечения числа из текстовой строки. Если у вас возникли трудности с пониманием формул или их настройкой для ваших наборов данных, вам может понравиться этот простой способ получить число из строки в Excel.

Надстройка Ultimate Suite предоставляет множество инструментов для работы с текстовыми значениями: удалить лишние пробелы и ненужные символы, изменить регистр текста, подсчитать символы и слова, добавить один и тот же текст в начало или конец всех ячеек в диапазоне, преобразовать текст в числа, разделить его по отдельным ячейкам, заменить ошибочные символы с правильными.

Вот как вы можете быстро получить число из любой буквенно-цифровой строки:

  1. Перейдите на вкладку AblebitsData > Текст и нажмите Извлечь (Extract) :
  1. Выделите все ячейки с нужным текстом.
  2. На панели инструмента установите переключатель «Извлечь числа (Extractnumbers.
  3. В зависимости от того, хотите ли вы, чтобы результаты были формулами или значениями, выберите переключатель «Вставить как формулу (Insertasformula или оставьте его неактивным (по умолчанию).

Я советую активировать эту возможность, если вы хотите, чтобы извлеченные числа обновлялись автоматически, как только в исходные строки вносятся какие-либо изменения.

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

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

В этом примере мы решили вставить результаты как формулы , и надстройка сделала именно то, что было запрошено:

Сложновато самому написать такую формулу, не правда ли?

Если отсутствует флажок «Вставить как формулу», вы увидите число в строке формул.

Любопытно попробовать? Просто скачайте пробную версию Ultimate Suite и убедитесь сами :)

Если вы хотите иметь этот, а также более 60 других полезных инструментов в своем Excel, воспользуйтесь этой специальной возможностью покупки, которую предоставлена исключительно читателям нашего блога.

Вот как вы можете преобразовать текст в число Excel с помощью формул и встроенных функций. Более сложные случаи, когда в ячейке находятся одновременно и буквы, и цифры, мы рассмотрим в отдельной статье. Я благодарю вас за чтение и надеюсь не раз еще увидеть вас в нашем блоге!

Как быстро посчитать количество слов в Excel - В статье объясняется, как подсчитывать слова в Excel с помощью функции ДЛСТР в сочетании с другими функциями Excel, а также приводятся формулы для подсчета общего количества или конкретных слов в… Как быстро извлечь число из текста в Excel - В этом кратком руководстве показано, как можно быстро извлекать число из различных текстовых выражений в Excel с помощью формул или специального инструмента «Извлечь». Проблема выделения числа из текста возникает достаточно… Как умножить число на процент и прибавить проценты - Ранее мы уже научились считать проценты в Excel. Рассмотрим несколько случаев, когда известная нам величина процента помогает рассчитать различные числовые значения. Чему равен процент от числаКак умножить число на процентКак… Как считать проценты в Excel — примеры формул - В этом руководстве вы познакомитесь с быстрым способом расчета процентов в Excel, найдете базовую формулу процента и еще несколько формул для расчета процентного изменения, процента от общей суммы и т.д.… Округление в Excel – какую из 12 формул лучше использовать? - В статье объясняется использование ОКРУГЛ, ОКРУГЛТ, ОКРУГЛВВЕРХ, ОКРВНИЗ, ЦЕЛОЕ, ОТБР и множества других функций округления в Excel. Также приводятся примеры формул для изменения десятичных чисел до целых или до определенного… Функция ПРАВСИМВ в Excel — примеры и советы. - В последних нескольких статьях мы обсуждали различные текстовые функции. Сегодня наше внимание сосредоточено на ПРАВСИМВ (RIGHT в английской версии), которая предназначена для возврата указанного количества символов из крайней правой части… Функция ЛЕВСИМВ в Excel. Примеры использования и советы. - В руководстве показано, как использовать функцию ЛЕВСИМВ (LEFT) в Excel, чтобы получить подстроку из начала текстовой строки, извлечь текст перед определенным символом, заставить формулу возвращать число и многое другое. Среди… Как извлечь текст из ячейки при помощи функции ПСТР и специальных инструментов - ПСТР - одна из текстовых функций, которые Microsoft Excel предоставляет для управления текстовыми строками. На самом базовом уровне она используется для извлечения подстроки из середины текста. В этом руководстве мы обсудим… 5 примеров с функцией ДЛСТР в Excel. - Вы ищете формулу Excel для подсчета символов в ячейке? Если да, то вы, безусловно, попали на нужную страницу. В этом коротком руководстве вы узнаете, как использовать функцию ДЛСТР (LEN в английской версии)… Как быстро сосчитать количество символов в ячейке Excel - В руководстве объясняется, как считать символы в Excel. Вы изучите формулы, позволяющие получить общее количество символов в диапазоне и подсчитывать только определенные символы в одной или нескольких ячейках. В нашем предыдущем…

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

Может кто-нибудь указать мне в правильном направлении?

Вам следует использовать INDEX(MATCH) вместо VLOOKUP , потому что VLOOKUP ведет себя непредсказуемым образом, что приводит к ошибкам, например той, с которой вы предположительно столкнулись.

INDEX MATCH example

Использование 0 в качестве последнего аргумента для MATCH означает, что соответствие должно быть точным
Вот более подробная информация о INDEX(MATCH) - ing

Добавьте ноль +0 , чтобы преобразовать значение в число.
Это можно (опасно) расширить с помощью IFERROR() , чтобы превратить нечисловой текст в ноль:

В противном случае вы можете создать пустую строку &"" , чтобы значение было строкой.

Если 0 не используется в качестве последнего аргумента для MATCH , он найдет всевозможные неожиданные «совпадения» . и, что еще хуже, он может найти другое значение, даже если присутствует точное совпадение.

Часто имеет смысл проделать дополнительную работу, чтобы определить, есть ли дубликаты в столбце поиска MATCH , иначе будет возвращено первое найденное значение (см. Пример).

Помощь с MATCH приходит от здесь, особенно логику сопоставления, которой управляет третий аргумент.

Чтобы использовать его, просто выберите соответствующий блок ячеек с помощью мыши, а затем запустите макрос (Alt + F8, чтобы открыть диалоговое окно). Он будет проходить через каждую ячейку в выбранном диапазоне и преобразовывать любое значение, которое она содержит, в число.

Я написал специальную функцию vlookup, которая не заботится о форматах данных. Поместите это в модуль в VBA и используйте = VLOOK вместо = VLOOKUP.

Я нашел это, но есть ли у кого-нибудь формула?

Это должно сработать, если вы добавите его перед строками vlookup или index / match:

Самый простой способ, который я могу придумать, - это использовать встроенную функцию = VALUE (TEXT_TO_CONVERT_TO_STRING).

Функции преобразования типов данных в 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 для нечисловых значений.

Примеры преобразования типов

Функция CBool

Функция CBool используется для преобразования выражений в тип данных Boolean.

В ячейках листа Excel могут храниться данные нескольких типов: текст, числа или формулы. И так как для Excel это разные типы данных, то и работает он с ними по-разному (например, к тексту нельзя применять математические операции, а числа не получится использовать во многих текстовых функциях).

Проблемы начинаются тогда, когда на листе появляются числа, которые программа воспринимает как текст. Наиболее часто такая ошибка возникает при выгрузке данных из других приложений, учетных систем и программ (например, из 1С или какой-то ERP-системы). Последствия такой ошибки достаточно существенны. Число, выгруженное как текст, не участвует в расчетах, неправильно обрабатывается сводными таблицами, даёт ошибки в формулах, неверно сортируется и фильтруется.

Сумма в ячейках А1:А5 равна 40, а должна быть 50 (число в А4 введено как текст) Сумма в ячейках А1:А5 равна 40, а должна быть 50 (число в А4 введено как текст)

Одна такая ошибка среди большого массива чисел, хотя и будет почти незаметна визуально (особенно для неопытного пользователя), исказит все результаты расчетов. Как же найти число, сохраненное как текст?

Признаки того, что число сохранено как текст

  • Значение в ячейке выравнено по левому краю (по умолчанию, текст выравнивается по левому краю, а числа - по правому);
  • В левом верхнем углу ячейки горит индикатор ошибки (маленький зеленый уголок). При выделении такой ячейки в правом верхнем углу появляется пиктограмма с восклицательным знаком. При наведении на него или при нажатии - появляется указание, что число сохранено как текст.
  • Число не учитывается математическими формулами (например, не попадает в общую сумму, как на рисунке выше).

Существует достаточно много других способов исправления ошибки.

1. Использование формулы с математическим действием

Если применить к проблемному числу математическое действие, то оно превратится в настоящее число, воспринимаемое программой. Разумеется, математическая операция не должна изменять значение числа (такими операциями являются: умножение и деление на единицу, прибавление и вычитание нуля, возведение в первую степень, двойное отрицание).

Минус такого подхода - исправленное число появится в ячейке, в которую введена формула (его скорее всего потребуется заменить на значение). Исходный диапазон не изменится (по крайней мере, пока Вы не замените его на полученные верные значения).

2. Использование формулы с функцией ЗНАЧЕН()

Встроенная функция ЗНАЧЕН() предназначена как раз для решения описанной проблемы. Она преобразует число как текст в нормальное число. Аргумент у нее один - ячейка с проблемными данными (например =ЗНАЧЕН(А1) исправит число в ячейке А1).

Минус - тот же, что и в способе выше. С другой стороны, если Вы постоянно подгружаете проблемные данные в одни и те же ячейки, которые потом используете в формулах, то можно один раз прописать в формулу функцию ЗНАЧЕН() и больше не вспоминать про то, верно ли выгружены числа в исходный диапазон.

3. Использование специальной вставки с применением математической операции

Вероятно, самый полезный способ. По своей сути аналогичен первому, но позволяет исправлять данные прямо в исходных ячейках.

Выделите любую ПУСТУЮ ячейку, скопируйте ее, затем выделите ячейки с проблемными данными и нажмите сочетание клавиш Ctrl+Alt+V. В открывшемся окне специальной вставке выберите "значения" и операцию "сложить" или "вычесть". В результате прямо в исходных ячейках будет произведено прибавление к данным нуля (или вычитание, в зависимости от выбранной операции), и проблемные числа будут преобразованы в обычные.

4. Использование индикатора-ошибки

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

Быстро и удобно. К сожалению, очень часто Excel не помечает проблемные числа индикатором. Если это Ваш случай - пользуйтесь одним из способов выше.

Каждый из описанных способов хорош в определенной ситуации. Выбирайте подходящий, исходя из своих задач.

Всё вышеописанное справедливо и по отношению к датам и времени (так как они в Excel на самом деле являются числами).

Видеоверсию данной статьи смотрите на нашем канале на YouTube

Чтобы не пропустить новые уроки и постоянно повышать свое мастерство владения Excel - подписывайтесь на наш канал в Telegram Excel Everyday

Куча интересного по другим офисным приложениям от Microsoft (Word, Outlook, Power Point, Visio и т.д.) - на нашем канале в Telegram Office Killer

Вопросы по Excel можно задать нашему боту обратной связи в Telegram @ExEvFeedbackBot

Вопросы по другому ПО (кроме Excel) задавайте второму боту - @KillOfBot

Читайте также: