Как в excel выделить число из текста Excelka.ru - все про Ексель

Как в excel выделить число из текста

Как в excel выделить число из текста

Здравствуйте уважаемые форумчане, столкнулся с такой проблемой. Сразу оговорюсь что пользователь начинающий (exel) потому сильно не пинайте
С копировал из одной программы данные с цифрами в ексель (числа) и они почему-то стали отображаться по-разному все. Какие-то смещены вправо а какие-то выравниваются с левой стороны, я так понимаю что это из-за разности форматов. Те, что справа это воспринимается как текст а те что слева как числа.
Вот и вопрос возник, как все перевести в формат числа?
Менял формат выделенных ячеек, ничего не получилось. Одни товарищи сказали что нужно руками все переписывать, но я сомневаюсь в этом. Какое-то совсем дикое решение на мой взгляд.
Потому что может быть и 1000 ячеек и 5000. Руками не вариант. Уверен что есть решение, и оно весьма просто должно быть.
***
Я не прошу дать мне готовый ответ, буду рад ссылке, что читать и куда смотреть. Сам прочитаю и разберусь. Но куда смотреть сейчас просто не могу сообразить.

Заранее спасибо!
Тему не стал новую создавать, показалось что похожи.
[moder]А зря. Почитайте Правила форума, там как раз про это написано.
Эта тема закрыта, создавайте свою.

К сожалению, предыдущую тему закрыли, а вопрос до конца не решен.
История начинается здесь:
http://www.excelworld.ru/forum/2-18638-1

Я воспользовался формулой массива от Nic70y.

Во вложении несколько сложных случаев. Можно их как-то учесть в формуле, чтобы она сделала правильную выборку?
[moder]Ну да, там я поторопился, пожалуй. Открыл ту тему и перенес туда этот пост

krosav4ig, Спасибо за помощь.

Nic70y, тебе тоже спасибо!

Как вытащить число или часть текста из текстовой строки в Excel

Сегодня мы с вами рассмотрим весьма распространённую ситуацию, возникающую в работе экономиста связанную с анализом данных.

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

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

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

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

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

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

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

Возможна ситуация, когда этот код находиться всегда в начале текстовой строки или всегда в конце.

В этом случае, мы можем извлекать код или часть текста при помощи функций ЛЕВСИМВ и ПРАВСИМВ, которые возвращают заданное количество знаков соответственно с начала строки или с конца строки.

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

Количество_знаков — необязательный аргумент. Количество символов, извлекаемых функцией ЛЕВСИМВ (ПРАВСИМВ).

«Количество_знаков» должно быть больше нуля или равно ему. Если «количество_знаков» превышает длину текста, функция ЛЕВСИМВ (ПРАВСИМВ) возвращает весь текст. Если значение «количество_знаков» опущено, оно считается равным 1.

Зная количество знаков, которые содержит код, мы легко извлечем необходимые символы.

Сложнее если нужные нам символы находятся в середине текста.

Извлечь число, текст, код и т.д. из середины текстовой строки может функция ПСТР, возвращает заданное число знаков из строки текста, начиная с указанной позиции.

=ПСТР(текст; начальная_позиция; количество_знаков)

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

Начальная_позиция – обязательный аргумент. Позиция первого знака, извлекаемого из текста. Первый знак в тексте имеет начальную позицию 1 и так далее.

Количество_знаков – обязательный аргумент. Указывает, сколько знаков должна вернуть функция ПСТР.

Самый простой случай – если код находиться на одном и том же месте от начала строки. Например, у нас наименование документа начинается всегда одинаково «Поступление товаров и услуг ХХ ….»

Наш признак «ХХ» — код филиала начинается с 29 знака и имеет 2 знака в своем составе.

В нашем случае формула будет иметь вид:

Однако не всегда все так безоблачно. Предположим, мы не можем со 100% уверенностью сказать, что наименование документа у нас во всех строках будет начинаться одинаково, но мы точно знаем, что признак филиала закодирован в номере документа следующим образом:

Читать еще:  Как скопировать текст из эксель в эксель

Первый символ – первая буква в наименовании филиала, второй символ – это буква Ф (филиал) и далее следует пять нулей «00000». Причем меняется только первый символ — первая буква наименования филиала.

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

=ПОИСК(искомый_текст; текст_для_поиска; [нач_позиция])

Искомый_текст – обязательный аргумент. Текст, который требуется найти.

Просматриваемый_текст – обязательный аргумент. Текст, в котором нужно найти значение аргумента искомый_текст.

Нач_позиция – необязательный аргумент. Номер знака в аргументе просматриваемый_текст, с которого следует начать поиск.

Функция ПОИСК не учитывает регистр. Если требуется учитывать регистр, используйте функцию НАЙТИ.

В аргументе искомый_текст можно использовать подстановочные знаки: вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку, звездочка — любой последовательности знаков. Если требуется найти вопросительный знак или звездочку, введите перед ним тильду (

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

Эта формула определяет начальную позицию кода филиала в наименовании документа, а затем возвращает два знака кода, начиная с найденной позиции.

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

Извлекаем в MS EXCEL число из конца текстовой строки

Извлечем число из конца текстовой строки, например, из строки «Филатова123» получим «123».

Пусть текстовая строка Филатова123 находится в ячейке A1. Чтобы извлечь число 123, расположенное справа, запишем формулу массива:
=1*ПСТР(A1;
ПОИСКПОЗ(ЛОЖЬ;ЕОШИБКА(1*ПСТР(A1;СТРОКА(ДВССЫЛ(«A1:A»&ДЛСТР(A1)));1));0);
255)

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

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

О построении этой формулы смотрите здесь . Это также формула массива — не забудьте нажать CRTL+SHIFT+ENTER.

Несколько чисел в текстовой строке (через WORD)

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

  • скопируйте столбец с текстовыми строками, содержащие числа, в MS WORD;
  • нажмите CTRL+H, т.е. вызовите инструмент Найти и Заменить;
  • В поле Найти введите ^$ (любая буква) или его выберите из меню (см. рисунок ниже);

  • в поле Заменить на: оставьте пустым (если все числа в строке нужно вывести одним числом, т.е. текстовая строка 123Филато11в6а будет преобразована в 123116) или введите пробел (если в дальнейшем потребуется вывести числа в отдельные ячейки);
  • нажмите ОК, буквы будут заменены пробелами или просто убраны;
  • скопируйте столбец обратно в MS EXCEL.

Если требуется вывести полученные числа в отдельные ячейки, то используйте инструмент Текст-по-столбцам (мастер текстов) или материал статьи Разнесение текстовых строк по столбцам.

Несколько чисел в текстовой строке (через формулы, все числа склеиваются в одно)

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

  • подсчитайте количество букв в текстовой строке (ячейка А3) с помощью функции ДЛСТР() в ячейке B3;
  • создайте табличку, состоящую из количества столбцов = количеству букв в текстовой строке;
  • заголовкам столбцов присвойте порядковые номера;
  • в ячейку С3введите формулу =ПСТР($A3;C$2;1) и протяните ее вправо, заполнив все столбцы.

Заменив формулу =ПСТР($A3;C$2;1) на =ЕСЛИ(ЕОШ(—ПСТР($A3;C$2;1));»»;—ПСТР($A3;C$2;1)) можно вывести только числовые значения. Собрать все числовые значения в одну ячейку можно с помощью формулы =—Т(C7&D7&E7&F7&G7&H7&I7&J7&K7&L7&M7&N7&O7&P7&Q7) или =СЦЕПИТЬ(C7;D7;E7;F7;G7;H7;I7;J7;K7;L7;M7;N7;O7;P7;Q7)+0

Несколько чисел в текстовой строке (через формулы, все числа размещаются в разные ячейки)

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

  • как в предыдущем примере каждый символ текстовой строки выводим в отдельную ячейку;
  • с помощью функций СЖПРОБЕЛЫ() и ( СЦЕПИТЬ() или аперсанда &) выводим текстовую строку без букв (т.е. только числа), между числами — 1 пробел;
  • с помощью функции ПОИСК() находим начальные позиции каждого числа;
  • с помощью функции ПСТР(), ЛЕВСИМВ(), ПРАВСИМВ() выводим числа в отдельные ячейки.

Решение из файла примера позволяет извлекать от 2-х до 4-х чисел из текстовых строк длиной до 15 символов. При желании решение можно легко расширить на большее количество символов и чисел.

Совет: В статье Извлекаем число из начала текстовой строки приведено решение соответствующей задачи. В статье Извлекаем число из середины текстовой строки приведено решение соответствующей задачи.

Извлечение числа из текста

Данная функция является частью надстройки MulTEx

  • Описание, установка, удаление и обновление
  • Полный список команд и функций MulTEx
  • Часто задаваемые вопросы по MulTEx
  • Скачать MulTEx

Вызов команды:
MulTEx -группа Ячейки/ДиапазоныЯчейкиИзвлечение числа из текста

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

Как видно, в каждой ячейке в ячейке записан текст вида: » Выполненных работ по договору подряда на сумму 54 033р. » И из всего этого текста необходимо получить только сумму ( 54 033 ), чтобы в дальнейшем можно было работать с данными именно как с числовыми(вычислять проценты, делать наценки, суммировать и пр.). Команда Извлечение числа из текста сделает это за Вас быстро и удобно. Все, что необходимо это указать ячейки с исходными данными, первую ячейку для записи результата и что именно надо извлечь: число или текст.

Читать еще:  Как в excel перемешать строки

Диапазон значений — указывается ячейка/диапазон ячеек, значения в которых необходимо изменить.
Ячейка для вывода данных — указывается ячейка, в которую поместить результат. Если Диапазон значений содержит более одной ячейки, то преобразованные данные будут выведены, начиная с указанной ячейки(Ячейка для вывода данных) в том же порядке, в котором они расположены в исходном диапазоне:

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

Оставить:

  • только цифры — если установлен, то после обработки в каждой ячейке будет удален весь текст и оставлены только числовые значения(цифры)
  • только текст — если установлен, то после обработки в каждой ячейке будут удалены все числовые значения(цифры). Запятые и точки остаются.

Не удалять символы — с помощью этой опции можно указать буквы и символы, которые не надо удалять, даже если они должны быть удалены. На примере таблицы выше — надо оставить в ячейках только суммы. Но суммы могут быть записаны со знаками после запятой: 54 033,56р . Если опцию Не удалять символы отключить, то запятая будет удалена, хотя она является частью числа — разделитель целой и дробной части. Числа будут записаны в итоге не верно. Число 54 033,56 будет записано как 5 403 356 . Чтобы этого избежать необходимо установить пункт Не удалять символы и записать в поле запятую. В этом поле можно указать сразу несколько символов/букв/цифр, которые не надо удалять.

Вставлять между цифрами/словами разделитель — используется для объединения множественных разрозненных чисел внутри текста когда в тексте цифры или числа «разбросаны». Например есть текст: Выручка за октябрь: грузовые перевозки — 315 600р, диагностика — 112 430р, прочие — 67 000р . Суммы здесь разбиты на три: 315600 , 112430 и 67000 . Если не указать разделитель, то они будут все записаны как одно единое: 31560011243067000 . Чтобы записать их через точку-с-запятой необходимо просто записать в это поле знак точки-с-запятой(;). В результате получим три числа в ячейке, записанных через разделитель: 315600; 112430; 67000 . В дальнейшем эти числа можно разнести на разные ячейки при помощи функции ЧастьСтроки:
=ЧастьСтроки( E2 ; «; «; 1) — первое число
=ЧастьСтроки( E2 ; «; «; 2) — второе число
=ЧастьСтроки( E2 ; «; «; 3) — третье число
при условии, что результирующий текст записан в ячейке E2 .

Извлечение слов из текста в Excel

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

Важное замечание!

Задача 1. Подсчет количества слов в тексте

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

Итак, слова в тексте отделены друг от друга пробелами. Пробелов всегда на 1 меньше, чем слов (действительно, между двумя словами — один пробел, между тремя — два и т.д.). Значит, достаточно подсчитать пробелы и прибавить к ним единицу, чтобы узнать число слов в ячейке.

В Excel есть замечательные функции ДЛСТР() и ПОДСТАВИТЬ() . Первая подсчитывает количество символов в указанной ячейке, а вторая умеет заменять указанный символ на любой другой или на пусто (обозначается как двойные кавычки без пробела между ними «» ).

Функция ПОДСТАВИТЬ() имеет 4 аргумента:

1) Ячейка с текстом

2) То, что нужно заменить (указывается в кавычках)

3) То, на что нужно заменить (указывается в кавычка)

4) Необязательный аргумент — номер вхождения заменяемого текста. То есть, если в тексте 4 пробела, мы можем заменить только тот, номер которого укажем. Если аргумент опущен — заменяются все символы.

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

Прибавим к ней единицу — и получим число слов в ячейке.

Имейте в виду, что такой способ подсчета принимает символы, отделенные от слов пробелом, за отдельные слова. Например, тире, обрамленное пробелами, также будет считаться отдельным словом. Избежать этого можно, если перед подсчетом пробелов убрать функцией ПОДСТАВИТЬ() лишние знаки из ячейки.

Задача 2. Извлечение первого слова из текста

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

Найти символ в тексте поможет функция НАЙТИ() . У нее есть 3 аргумента:

1) Искомый текст;

2) Текст, в котором ищем;

3) С какого символа начать поиск (необязательный, если опущен — функция ищет с самого начала).

Результатом работы функции является позиция первого символа найденного текста в строке. Например, формула =НАЙТИ(«плюс»;»Один плюс один») вернет в результате число 6 (именно с этой позиции начинается искомое слово «плюс»). Если в строке несколько раз содержится искомое слово, то вернется результат для первого вхождения.

Функция НАЙТИ работает с учетом регистра и без подстановочных знаков. Если нужно их использовать, или не учитывать регистр — есть аналогичная функция ПОИСК() .

Теперь мы можем найти позицию первого пробела

Извлечь символы до пробела поможет функция ЛЕВСИМВ . Ей нужно указать текст, а также число символов, которое нужно извлечь начиная с первого. Если найденный пробел, например, 6-ой символ, то нам нужно извлечь 6-1=5.

Формула для извлечения первого слова:

Если в строке одно слово (то есть нет пробела между первым и вторым словом), данная формула вернет ошибку. Чтобы этого избежать, нужно добавить к ней функцию ЕСЛИОШИБКА() .

Теперь формула корректно сработает для любого числа слов в ячейке.

Задача 3. Извлечение последнего слова из текста

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

  • подсчитаем, сколько в ячейке пробелов, воспользовавшись приемом из Задачи 1.

=ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))

  • с помощью функции ПОДСТАВИТЬ заменим последний пробел в тексте на символ, которого там точно нет (например, «*» или «$»). Чтобы заменить именно последний пробел, добавим в качестве необязательного аргумента формулу из предыдущего пункта (то есть число пробелов, так как оно равно номеру последнего пробела)

=ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»)))

  • теперь, когда последний пробел заменен на «*», мы можем узнать его позицию с помощью функции НАЙТИ() . В качестве текста, в котором ищем, укажем предыдущую формулу

=НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))

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

=ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»))))

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

Как и в предыдущей задаче, можно обернуть в ЕСЛИОШИБКА , чтобы верно работало с ячейками, в которых только 1 слово.

=ЕСЛИОШИБКА(ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(«*»;ПОДСТАВИТЬ(A1;» «;»*»;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;» «;»»)))));A1)

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

Function РЕВЕРС(str As String)

Это макрофункция. Теперь, используя ее, можно отразить текст зеркально, извлечь первое слово, как в Задаче 2 и отразить его обратно. Формула:

Берите на вооружение, если любите макросы.

Задача 4. Извлечение n-ного слова из текста

Самый интересный пример. Для решения подобной задачи нужно применить фантазию. Разберем решение поэтапно.

Помимо уже использовавшихся в статье функций, нам понадобятся еще 2:

1) ПОВТОР() . Умеет повторять указанный текст указанное число раз.

2) ПСТР() . Имеет 3 аргумента:

  • исходный текст;
  • позиция, с которой нужно начать извлечение;
  • число символов, которые нужно извлечь.

Теперь мы вооружены всем нужным инструментарием. Приступаем:

  • Для начала воспользуемся функцией ПОВТОР() , чтобы вместо 1 пробела в тексте вставить число пробелов, равное длине исходного текста. Количество повторений узнаем через уже известную функцию ДЛСТР() . Итак, формула:

=ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;ДЛСТР(A1)))

  • Теперь каждое слово отделено друг от друга числом символов, равным общей длине строки. Чтобы извлечь слово под номером n, нам нужно узнать позицию какого-нибудь пробела между словом n и n-1 в обработанном удлиненном тексте. Это может сделать формула ниже (+1 в ней нужно для правильного поиска первого слова):

=ДЛСТР(A1)*(n-1)+1

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

  • Теперь мы может извлечь из найденной позиции число символов ДЛСТР(A1) (на рисунке — m ) и извлеченный текст всегда будет захватывать нужное нам слово целиком (с некоторым количеством предшествующих и последующих пробелов)

=ПСТР(ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;ДЛСТР(A1)));ДЛСТР(A1)*(n-1)+1;ДЛСТР(A1))

  • Осталось избавиться от лишних пробелов функцией СЖПРОБЕЛЫ()

=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;» «;ПОВТОР(» «;ДЛСТР(A1)));ДЛСТР(A1)*(n-1)+1;ДЛСТР(A1)))

Не забудьте в формуле заменить n на номер извлекаемого слова или ссылку на ячейку с этим номером.

Задача 5. Извлечение имя файла из полного пути к нему

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

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

Берем формулу из задачи 3 и заменяем в ней пробелы на «».

Получим следующую формулу:

Вставляем в ячейку и вуаля! Имя файла извлечено.

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

Поддержать наш проект и его дальнейшее развитие можно вот здесь .

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

Читать еще:  Как перенести строку в ячейке эксель
Ссылка на основную публикацию