Excel число в строку с разделителем
Порой при работе в Excel встречаются данные, в которых умышленно или неумышленно сцеплены текст и цифры. Например, определенное число из нескольких цифр, и текст перед ним. Стоит задача отделить это число от текста. Или это некий набор буквенно-числовых артикулов, в которых нужно отделить буквы от цифр.
При этом ни функций, ни процедур, которые выполняли бы задуманное, в Excel по умолчанию нет. Можно ли? Ответ — да, а далее — пошаговое руководство.
Прежде, чем приступать к непосредственному решению задачи, рекомендуется сначала найти числа в каждой ячейке и аналогично проверить, что эти же ячейки содержат буквы, обычно кириллицы или латиницы. Это позволит сократить требуемые вычислительные ресурсы, если строк в данных много.
В этой статье я рассматриваю существующие способы разделения текста и цифр, как с помощью стандартных функций Excel, так и с помощью сторонних решений, в числе которых моя надстройка для Excel.
Примечание: речь в ней о разделении текста и цифр внутри ячейки. Если вы хотите выделить цифры в отдельную ячейку — читайте эту статью: извлечь цифры из ячейки в Excel.
Отделить цифры от текста — формулы Excel
Начнем с штатных возможностей Excel. Наиболее несложно будет решить с их помощью задачи, когда количество текстовых и цифровых промежутков в строке определено и не меняется от строки к строке. Наиболее популярные варианты:
- буквы перед цифрами (x100, FX5200, MI6)
- цифра/цифры перед буквой/буквами (2021г, 3D, 4K, 4,2Ghz)
- число-текст-число (3к2, 22стр3, 1ЕКХ23)
Отделить число справа от текста
Если мы знаем, что ячейка начинается с букв, а заканчивается цифрами, нужно найти позицию первой цифры в ячейке. По ссылке читайте подробности, а вот сама формула:
Далее уже дело техники — получить фрагменты до этой позиции и начиная с нее, в этом помогут функции ЛЕВСИМВ и ПСТР. Допустим, если позиция будет вычислена в ячейке A2, а исходный текст в ячейке A1, то формулы для первой и второй части будут, соответственно:
Если хочется вывести весь результат через разделитель сразу в одну ячейку, нужно составить формулу из трех вышеуказанных:
Данная формула имеет разделителем пробел (в строке посередине), если хотите использовать другой разделитель, просто замените его на свой.
Отделить цифры, стоящие перед текстом
Если же заранее известно, что текст ячейки начинается с цифр и продолжается текстовыми символами, нужно получить позицию первого нечислового символа. Это можно сделать с помощью аналогичной формулы массива, единственная разница лишь в том, что функция ПОИСКПОЗ ищет ИСТИНА, а не ЛОЖЬ:
Далее порядок действий аналогичен первому примеру.
Регулярные выражения
Когда порядок расположения текста и цифр в ячейке и количество фрагментов заранее не известно, отличным подспорьем станут регулярные выражения.
К сожалению, на текущий момент они не поставляются в Excel из коробки, но доступны по умолчанию в гугл таблицах.
В Гугл таблицах
Формула Гугл таблиц, которая разделит текст и цифры, довольно незамысловата:
Подробнее о регулярных выражениях и том, как они работают, можно почитать в моей статье на этом сайте: Регулярные выражения в Excel (ссылка).
В Excel с надстройкой !SEMTools
Тем не менее, всем пользователям моей надстройки функции регулярных выражений доступны бесплатно безо всяких ограничений — нужно просто подключить надстройку к Excel. Важно понимать, что функции будут работать корректно только на компьютерах, где она установлена.
Разделить текст и числа через пробел с помощью регулярных выражений в Excel с !SEMTools
Разбить текст и цифры с !SEMTools в 2 клика
Для тех, кто ценит время, я разработал процедуру, которая разбивает текст и цифры прямо внутри ячейки, или выводит результат такой процедуры в соседний столбец — это зависит от глобальной настройки вывода результатов.
Все, что вам нужно сделать, это:
- просто выделить диапазон или ячейку,
- вызвать процедуру,
- указать разделитель
- и нажать ОК.
Хотите так же быстро выполнять данную процедуру? Попробуйте тестовую версию надстройки !SEMTools:
Часто бывает ситуация, когда необходимо из трех разных столбцов сцепить данные в одну строку с разделителем. Допустим в А1 Фамилия, в В1 - Имя, в С1 - Отчество, а надо получить все вместе Фамилия Имя Отчество. Как обычно в Excel объединяют значения нескольких ячеек в одну? Правильно, при помощи функции СЦЕПИТЬ или при помощи амперсанда:
=СЦЕПИТЬ( A1 ;" "; B1 ;" "; C1 ;" ")
= A1 &" "& B1 &" "& C1 &" "
Это достаточно эффективно, если необходимо сцепить значения из трех-пяти ячеек. А если ячеек 50? Или того больше? Не очень удобно объединять их все описанными выше способами. А других встроенных функций в Excel для подобных операций не существует. С момента написания статьи Microsoft порадовал нас новыми функциями и теперь в составе функций есть функция ОБЪЕДИНИТЬ (TEXTJOIN) , которая способна решить задачу без лишних телодвижений.
=ОБЪЕДИНИТЬ(", ";ИСТИНА; A2:A100 )
=TEXTJOIN(", ",TRUE,A2:A100)
-
Разделитель(", ") - разделитель, с которым объединять текст из указанных ячеек
Пропускать пустые(ИСТИНА) - указывает пропускать ли пустые ячейки. Т.е. если указано ИСТИНА или 1(а так же если аргумент вовсе не указан) - пустые ячейки будут пропускаться и не попадут в общую строку сцепки. Если указано ЛОЖЬ - сцепляться будут все ячейки, независимо от их содержимого. Например, если указать три ячейки A1:A3 в которых А2 пустая, то при указании ИСТИНА результат будет таким: "один, два" . Если указать ЛОЖЬ, то пустая ячейка тоже попадет в сцепку: "один, , два" .
Так же этот аргумент удобен, если неизвестен заранее размер диапазона сцепления. Можно указать ячейки чуть с запасом( A1:A300 ) и тогда сцепляться будут только ячейки заполненного диапазона.
Текст( A2:A100 ) - указывается непосредственно диапазон либо текст для сцепления. Этот аргумент расширяемый - т.е. можно указать не один диапазон, а несколько или просто текст: =ОБЪЕДИНИТЬ(", ";ИСТИНА; A2:A100 ; B2:B70 ;"текст")
Правда и здесь не все так радужно: эта функция доступна только пользователям версий 2019 и выше, а так же офиса 365 .
Поэтому я написал функцию пользователя, которая сцепляет данные из указанных ячеек в одну строку и использовать её можно в любой версии офиса. Чем отличается от стандартной функции СЦЕПИТЬ()? Тем, что в качестве ячеек для сцепки указывается не каждая из ячеек по очереди, а сразу весь диапазон с возможностью указания разделителя между значениями каждой ячейки. Так же, в функции сразу заложен алгоритм пропуска пустых ячеек и возможность сцеплять исключительно уникальные значения - т.е. в результате будут сцепляться только те ячейки, значения которых ранее еще не были добавлены в сцепку.
Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA( Alt + F11 ) -создать стандартный модуль(Insert -Module) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций( Shift + F3 ), отыскав её в категории Определенные пользователем (User Defined Functions) .
Синтаксис функции:
=СцепитьМного(A2:A100;", ";ИСТИНА)
Диапазон - диапазон ячеек, значения которых необходимо объединить в строку.
Разделитель - необязательный аргумент. Один или несколько символов, которые будут вставлены между каждым словом. По умолчанию пробел.
БезПовторов - необязательный аргумент. Если указан как ИСТИНА или 1 - в результирующей строке будут значения без дубликатов. Например, из значений Сидоров, Петров, Сидоров, Иванов в результат попадут только Сидоров, Петров, Иванов. Если ЛОЖЬ или 0 - будут выведены все значения. Для английской локализации данный параметр указывается как TRUE и FALSE соответственно.
СцепитьМного.xls (52,5 KiB, 10 809 скачиваний)
Если необходимо объединять значения ячеек из "рваных"(несмежных) диапазонов(выделенных через Ctrl), то код нужно немного изменить:
И еще одна реализация - в ней допускается указывать не только отдельные диапазоны, но и вообще все что угодно(ячейки, отдельный текст, числа и т.п.). Единственная проблема - в этой функции иначе организован порядок аргументов: сначала указывается разделитель, а уже потом значения для сцепления. Более подробно эта функция рассмотрена в статье Что такое функция пользователя(UDF)?. Так же эта функция не убирает дубли, что впрочем, не так сложно добавить, ориентируясь на функции выше.
Это — статья с пошаговым руководством.
Проблема
В Microsoft Excel 2010 можно настроить параметры тысячных и десятитысячных разделителей. Кроме того, это позволит вам настроить их по образцу для того, чтобы при выполнении формулы проверялись вводимые данные и не показывались ошибочные результаты.
Решение
Изменение настроек конфигурации разделителей поясняется ниже.
В Microsoft Excel 2010 щелкните Файл и Параметры.
Далее в графе Дополнительно снимите галочку с Использовать системные разделители, добавьте те, которые вам необходимы и нажмите OK. Например, точка для тысячных и запятая для десятитысячных.
Следующий шаг – настроить параметры ячеек, которые будут использоваться с разделителями, параметры которых вы настроили. Для этого выберите ячейки, щелкните правой кнопкой мыши и нажмите Формат ячеек.
На вкладке Числовой из числовых форматов выберите число десятичных знаков 2, поставьте галочку на параметр Разделитель групп разрядов (.) и нажмите OK.
Теперь при использовании чисел в формуле, если вы их вводите с неправильными разделителями, Excel автоматически исправит их или предупредит об ошибке формата.
Нас интересует ваше мнение! Мы ждем ваших отзывов по данным статьям; их можно ввести в поле для комментариев в нижней части страницы. Ваши отзывы помогают нам повышать качество контента. Заранее спасибо!
Довольно часто в Excel нужно убрать из строки символы до определенного знака. Это может быть как один символ (пробел, точка, запятая, двоеточие и т.д.), так и символ из определенного множества (цифра, английская буква).
В зависимости от этих условий, решение может быть простым, а может потребовать использование довольно сложных формул и процедур.
В этой статье я подробно опишу известные мне варианты. Поехали!
Удалить текст до последнего символа
Наиболее просто удалить текст в диапазоне ячеек до последнего вхождения заданного символа или текста. Можно воспользоваться процедурой «Найти и заменить»:
- Выделить диапазон
- Вызвать процедуру поиска и замены со вкладки «Главная» или сочетанием клавиш Ctrl+H
- использовать подстановочный символ * (звездочку) прямо перед искомым в строке поиска
- оставить пустым второе поле и нажать ОК
Процедура заменит все символы до знака на пустоту, иначе говоря, удалит их. Звездочка как раз и обозначает «все символы».
Удалить текст до первого пробела — формула
Данная формула универсальна и позволит удалить не только текст до первого пробела, но и до любого другого первого вхождения символа в строке.
Однако удалить первое слово в ячейке — самая популярная задача, и пробел как раз и является символом, который отгораживает первое слово слева от остального текста.
Формулы для других символов аналогичны:
Убрать текст в ячейке до первой запятой:
А чтобы удалить текст до вхождения последовательности символов, например, слова, нужно использовать в формуле длину этой последовательности, сократив ее на 1:
Здесь из адресов удаляется текст до номера дома. Длина текста в кавычках — 3 символа (д, точка и пробел):
Удалить текст до первой цифры
Пожалуй, вы уже догадались, но я все же объясню, как работают формулы выше:
-
ищет позицию первого вхождения текстового паттерна (он всегда в кавычках). Соответствующий фрагмент выделен красным. принимает эту позицию как аргумент;
- она же заменяет фрагмент от первого символа до этой позиции на пустоту (две кавычки подряд), таким образом, удаляя его.
Следовательно, чтобы удалить текст до первой цифры, нужно вычислить позицию первой цифры в строке. Поскольку цифр не одна, а 10, простая формула уже не подойдет. Но можно сделать это вот такой формулой массива:
А подставив это выражение в исходную формулу, мы сможем решить исходную задачу — получить текст после первой цифры включительно, удалив текст до нее.
Что за числа 48 и 57, можно прочитать подробнее тут:
Обратите внимание на фигурные скобки! Их не нужно вводить, они появятся сами при вводе формулы сочетанием клавиш Ctrl+Shift+Enter.
Формула выдаст ошибку, если цифр в строке нет.
Удаление текста в 1-2 клика с !SEMTools
Каждый из перечисленных способов хорош по-своему, но всем им недостает одного важного фактора — скорости исполнения.
В каждом из случаев нужно вводить много символов и производить много действий.
Для экономии времени я включил быстрые процедуры в меню своей надстройки для Excel — !SEMTools.
Теперь удалить текст до первого или последнего вхождения конкретного символа или подстроки, включая и не включая сам текст, можно в считанные мгновения!
При этом можно как менять данные на месте, так и автоматически выводить в соседний столбец — за это отвечает глобальный чекбокс.
Удаляем символы в тексте до первого или последнего вхождения определенного текста с !SEMToolsХотите так же быстро обращаться с текстовыми данными в Excel и испытать на практике еще более 500 похожих процедур?
Жмите на кнопку ниже, чтобы бесплатно скачать и подключить пробную версию надстройки !SEMTools. Процедура займет пару минут.
Читайте также: