Как в Excel сделать формулу с текстом: 7 рабочих методов с примерами

Работа с текстовыми данными в Microsoft Excel часто вызывает затруднения у пользователей, привыкших оперировать только числами. Между тем, текстовые формулы позволяют автоматизировать рутинные задачи: от простого объединения ячеек до сложного парсинга данных. Без этих инструментов невозможно создать динамические отчёты, очистить импортированные данные или сгенерировать уникальные идентификаторы.

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

Особое внимание уделим типичным ошибкам: почему формула =СЦЕПИТЬ(A1;B1) возвращает число вместо текста, как правильно экранировать кавычки в формулах и почему ПОИСК иногда выдаёт ошибку #ЗНАЧ!. Вы также узнаете про малоизвестные приёмы, например, как использовать ТЕКСТПОСЛЕ для извлечения последнего слова в ячейке или как с помощью ПОДСТАВИТЬ удалить все пробелы в данных.

Для наглядности каждый раздел содержит:

  • 🔹 Пошаговую инструкцию с скриншотами (описание действий)
  • 📌 Примеры формул для копирования
  • ⚠️ Предупреждения о типичных ошибках
  • 💡 Практические кейсы из реальных задач
📊 Как часто вы работаете с текстовыми данными в Excel?
Ежедневно
Несколько раз в неделю
Редее чем раз в месяц
Никогда не работал

1. Объединение текста: СЦЕПИТЬ vs CONCAT vs ОБЪЕДИНИТЬ

Самая востребованная текстовая операция — конкатенация (объединение нескольких строк в одну). В Excel для этого есть три функции с нюансами:

Функция =СЦЕПИТЬ() (или =CONCATENATE() в английской версии) существует с первых версий Excel, но имеет ограничение: она не игнорирует пустые ячейки. Например, если в B2 пусто, формула =СЦЕПИТЬ(A2;B2;C2) вернёт лишний разделитель. Решение — использовать ЕСЛИ:

=СЦЕПИТЬ(A2; ЕСЛИ(B2<>""; " " & B2; ""); ЕСЛИ(C2<>""; " " & C2; ""))

В Excel 2019 и Microsoft 365 появилась более гибкая функция =ОБЪЕДИНИТЬ() (=TEXTJOIN()), которая позволяет:

  • 📍 Указать разделитель (например, запятую или пробел)
  • 🗑️ Игнорировать пустые ячейки (параметр ИСТИНА/ЛОЖЬ)
  • 🔢 Обрабатывать диапазоны, а не только отдельные ячейки

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

=ОБЪЕДИНИТЬ(" "; ИСТИНА; A2:C2)
⚠️ Внимание: Если в ячейках есть числа, Excel автоматически преобразует их в текст. Но если ячейка содержит формулу, возвращающую число (например, =СУММ()), её нужно обернуть в ТЕКСТ():

=ОБЪЕДИНИТЬ(""; ИСТИНА; ТЕКСТ(A1;"0"))

2. Извлечение символов: ЛЕВСИМВ, ПРАВСИМВ, ПСТР

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

Функция Синтаксис Пример Результат для "Excel2023"
ЛЕВСИМВ =ЛЕВСИМВ(текст; количество_символов) =ЛЕВСИМВ(A1;5) "Excel"
ПРАВСИМВ =ПРАВСИМВ(текст; количество_символов) =ПРАВСИМВ(A1;4) "2023"
ПСТР =ПСТР(текст; начальная_позиция; количество_символов) =ПСТР(A1;6;4) "2023"

Ключевая разница между ПСТР и ЛЕВСИМВ/ПРАВСИМВ — возможность извлечь символы из середины строки. Например, чтобы получить домен из email user@example.com:

=ПСТР(A1; ПОИСК("@";A1)+1; 100)

Здесь ПОИСК("@";A1) находит позицию символа "@", а +1 сдвигает начало извлечения на один символ вправо. Число 100 гарантирует, что мы возьмём все символы до конца строки.

⚠️ Внимание: Если вы указываете в ПСТР отрицательную начальную позицию или количество символов больше длины строки, Excel вернёт ошибку #ЗНАЧ!. Всегда проверяйте длину текста функцией ДЛСТР().

Как извлечь текст между двумя символами?

Допустим, у вас строка "ID:12345;Name:Ivan" и нужно получить "12345". Используйте комбинацию:

=ПСТР(A1; ПОИСК(":";A1)+1; ПОИСК(";"؛A1)-ПОИСК(":";A1)-1)

Разбираем по шагам:

1. ПОИСК(":";A1) находит позицию двоеточия (4)

2. +1 сдвигает начало на символ после двоеточия

3. ПОИСК(";"؛A1) находит позицию точки с запятой (9)

4. Вычитаем из неё позицию двоеточия и ещё -1, чтобы получить длину подстроки (9-4-1=4)

3. Поиск и замена: НАЙТИ, ПОИСК, ЗАМЕНИТЬ, ПОДСТАВИТЬ

Функции поиска и замены текста — основа для очистки данных. Разберём их различия:

  • 🔍 НАЙТИ — чувствительна к регистру (=НАЙТИ("е";"Excel") вернёт ошибку, так как "е" ≠ "E")
  • 🔎 ПОИСК — игнорирует регистр (=ПОИСК("е";"Excel") вернёт 2)
  • 🔄 ЗАМЕНИТЬ — заменяет текст по позиции (=ЗАМЕНИТЬ("Excel";2;1;"X") → "Excel" → "Xxcel")
  • 🔀 ПОДСТАВИТЬ — заменяет все вхождения подстроки (=ПОДСТАВИТЬ("2023 год";"год";"г.") → "2023 г.")

Критичный нюанс: Если искомый текст не найден, НАЙТИ и ПОИСК возвращают ошибку #ЗНАЧ!. Чтобы избежать сбоя формулы, оборачивайте их в ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(ПОИСК("x";A1); "Не найдено"; ПОИСК("x";A1))

Практический пример: заменим в списке телефонов все дефисы на пробелы, а затем удалим все нецифровые символы:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"-";" ");"(";"");")";"")

Эта формула последовательно удаляет скобки и дефисы, преобразуя формат (123)-456-7890 в 123 456 7890.

📋 Проверить регистр (НАЙТИ vs ПОИСК)

📋 Учесть пробелы (иногда " слово" ≠ "слово")

📋 Проверить специальные символы (кавычки, апострофы)

📋 Сохранить оригинал данных (на случай ошибки)

-->

4. Работа с регистром: ПРОПИСН, СТРОЧН, ПРОПНАЧ

Excel предлагает три функции для изменения регистра текста:

  • 📛 ПРОПИСН — преобразует весь текст в ЗАГЛАВНЫЕ буквы (=ПРОПИСН("excel") → "EXCEL")
  • 📜 СТРОЧН — преобразует в строчные (=СТРОЧН("EXCEL") → "excel")
  • 📝 ПРОПНАЧ — делает первую букву каждого слова заглавной (=ПРОПНАЧ("excel 2023") → "Excel 2023")

Эти функции незаменимы для стандартизации данных. Например, если у вас в списке клиентов фамилии введены в разном регистре ("иванов", "Петров", "СИДОРОВ"), одна формула приведёт их к единому виду:

=ПРОПНАЧ(СТРОЧН(A1))

Сначала СТРОЧН преобразует весь текст в строчные буквы, а затем ПРОПНАЧ делает заглавной первую букву каждого слова.

Важно: ПРОПНАЧ работает только с латинскими и кириллическими буквами. Для других алфавитов (греческого, арабского) потребуются макросы на VBA.

⚠️ Внимание: Если ячейка содержит числа или символы ("Excel2023!"), функции регистра не изменяют их. Только буквенные символы подлежат преобразованию.

5. Удаление пробелов и непечатаемых символов: СЖПРОБЕЛЫ, ПЕЧСИМВ

Импортированные данные часто содержат лишние пробелы, табуляции или невидимые символы (например, CHAR(160) — неразрывный пробел). Для их очистки используйте:

  • 🧹 СЖПРОБЕЛЫ — удаляет лишние пробелы между словами и по краям (=СЖПРОБЕЛЫ(" Excel 2023 ") → "Excel 2023")
  • 👁️ ПЕЧСИМВ — удаляет все непечатаемые символы (кроме пробелов)

Комбинация этих функций очищает данные от "мусора":

=СЖПРОБЕЛЫ(ПЕЧСИМВ(A1))

Распространённая проблема: после импорта из PDF или веб-страниц в тексте остаются "неразрывные пробелы" (CHAR(160)), которые СЖПРОБЕЛЫ не убирает. Решение — заменить их на обычные:

=ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1); СИМВОЛ(160); " ")
⚠️ Внимание: Функция ПЕЧСИМВ доступна только в Excel 2013 и новее. В старых версиях используйте комбинацию =ПОДСТАВИТЬ() для удаления конкретных символов по их коду (например, CHAR(9) для табуляции).

6. Продвинутые текстовые функции: ТЕКСТПОСЛЕ, ТЕКСТДО, ТЕКСТРАЗД

В Excel 2021 и Microsoft 365 появились революционные функции для работы с текстом, которые заменяют сложные комбинации ПОИСК + ПСТР:

  • 📄 ТЕКСТПОСЛЕ — возвращает текст после указанного разделителя
  • 📂 ТЕКСТДО — возвращает текст до указанного разделителя
  • 📃 ТЕКСТРАЗД — разбивает текст на массив по разделителю

Примеры:

=ТЕКСТПОСЛЕ("user@example.com";"@")  → "example.com"

=ТЕКСТДО("2023-12-31";"-") → "2023"

=ТЕКСТРАЗД("яблоко,груша,банан";",") → {"яблоко";"груша";"банан"}

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

=ТЕКСТПОСЛЕ(ТЕКСТПОСЛЕ("https://blog.example.co.uk/news";"/");"/")

Результат: "example.co.uk".

Функция ТЕКСТРАЗД особенно полезна для разбора CSV-данных прямо в Excel. Например, если в ячейке строка "Иванов;Иван;Иванович;1990", одна формула разобьёт её на отдельные значения:

=ТЕКСТРАЗД(A1;";")

В более старых версиях Excel для этого потребовался бы макрос на VBA.

7. Практические кейсы: 3 реальные задачи с решениями

Разберём типичные бизнес-задачи, где текстовые формулы экономят часы работы.

Кейс 1. Генерация email из ФИО

Исходные данные: в столбцах A, B, C — фамилия, имя, отчество. Нужно создать email вида и.фамилия@company.ru.

=СТРОЧН(ЛЕВСИМВ(B1;1) & "." & СТРОЧН(A1) & "@company.ru")

Кейс 2. Извлечение номера заказа из строки

Формат строки: "Заказ #12345 от 01.01.2023". Нужно получить 12345.

=ПСТР(A1; ПОИСК("#";A1)+1; ПОИСК(" ";A1;ПОИСК("#";A1))-ПОИСК("#";A1)-1)

Кейс 3. Очистка списка телефонов

Исходный формат: +7 (123) 456-78-90. Нужно: 71234567890.

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"(";"");")";"");"-";"");" ";"");"+";"")

Для автоматизации подобных задач создайте пользовательскую функцию через VBA (Alt+F11 → Insert → Module) или используйте Power Query (вкладка Данные → Получение данных).

FAQ: Частые вопросы по текстовым формулам

🔹 Почему формула =СЦЕПИТЬ(A1;B1) возвращает число, а не текст?

Excel автоматически преобразует текст в число, если ячейка отформатирована как "Общий" или "Числовой". Решения:

  1. Перед ячейкой добавьте апостроф: =СЦЕПИТЬ("'";A1;B1)
  2. Используйте ТЕКСТ(): =СЦЕПИТЬ(ТЕКСТ(A1;"0");B1)
  3. Измените формат ячейки с результатом на "Текстовый"
🔹 Как в формуле экранировать кавычки?

Чтобы вставить кавычку внутри текста формулы, удвойте её:

=СЦЕПИТЬ("Текст с ""кавычками"" внутри")

Результат: Текст с "кавычками" внутри.

🔹 Можно ли в Excel извлечь текст по регулярному выражению?

Нет, стандартные функции Excel не поддерживают регулярные выражения. Альтернативы:

  • Используйте Power Query (вкладка "Данные → Получение данных") — там есть поддержка RegEx.
  • Напишите пользовательскую функцию на VBA с RegExp.
  • Для простых случаев комбинируйте ПОИСК, ПСТР и ЕСЛИ.
🔹 Как объединить текст с разделителем, если данные в нескольких строках?

Используйте ОБЪЕДИНИТЬ с параметром "игнорировать пустые ячейки":

=ОБЪЕДИНИТЬ("; "; ИСТИНА; A1:A10)

Для старых версий Excel:

=ЕСЛИ(A1<>"";A1;"") & ЕСЛИ(A2<>"";"; " & A2;"") & ...
🔹 Почему ПОИСК возвращает #ЗНАЧ!, хотя подстрока есть в тексте?

Вероятные причины:

  1. Вы используете НАЙТИ (чувствительна к регистру), а не ПОИСК.
  2. Искомый текст содержит непечатаемые символы (проверьте через =КОДСИМВ(ПСТР(A1;1;1))).
  3. Ячейка содержит ошибку (например, #Н/Д). Используйте =ЕСЛИОШИБКА(ПОИСК(...);0).