Разбиваем ссылки в Excel на части: от ручного метода до автоматизации

Работа с URL-адресами в Microsoft Excel часто требует их разделения на составные элементы: протокол (https://), домен (example.com), путь (/page/123) или параметры (?id=5). Без правильных инструментов эта задача превращается в мучительное ручное копирование или использование внешних сервисов. Между тем, Excel предлагает встроенные функции, формулы и даже возможности Power Query, чтобы автоматизировать процесс.

В этой статье вы найдёте 5 проверенных методов — от простых формул до продвинутых скриптов VBA, — которые помогут извлечь из ссылок нужные фрагменты. Мы разберём не только стандартные случаи (например, выделение домена), но и нюансы работы с динамическими URL, содержащими UTM-метки, хэши и специальные символы. Все решения адаптированы для Excel 2016–2023 и Microsoft 365, включая веб-версию.

1. Разделение ссылки с помощью функций ТЕКСТ и ПОИСК

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

Например, чтобы выделить домен второго уровня (например, google из https://www.google.com/search), используйте формулу:

=ПСТР(A2;НАЙТИ("://";A2)+3;НАЙТИ("/";A2;НАЙТИ("://";A2)+3)-(НАЙТИ("://";A2)+3))

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

  • 🔍 НАЙТИ("://";A2) — находит позицию :// (обычно 8-й символ для https://).
  • 📍 НАЙТИ("/";A2;НАЙТИ("://";A2)+3) — ищет первый слэш после протокола.
  • ✂️ ПСТР() — извлекает подстроку между этими позициями.
⚠️ Внимание: Формула не сработает для URL без пути (например, https://example.com). В этом случае добавьте проверку с ЕСЛИОШИБКА():
=ЕСЛИОШИБКА(ПСТР(...); ПСТР(A2;НАЙТИ("://";A2)+3;ДЛСТР(A2)))

2. Извлечение параметров URL с функцией ТЕКСТ.ПОСЛЕ

Для работы с UTM-метками или другими параметрами (например, ?utm_source=facebook) удобно использовать функцию ТЕКСТ.ПОСЛЕ() (доступна в Excel 365 и Excel 2021). Она позволяет извлекать текст после заданного разделителя.

Примеры:

ЗадачаФормулаПример результата
Извлечь значение utm_source=ТЕКСТ.ПОСЛЕ(ТЕКСТ.ДО("?";A2);"utm_source=")facebook
Получить все параметры после ?=ТЕКСТ.ПОСЛЕ(A2;"?")utm_source=facebook&utm_medium=cpc
Выделить хэш (#)=ТЕКСТ.ПОСЛЕ(A2;"#")section1

Для более сложных случаев (например, когда параметров несколько) комбинируйте ТЕКСТ.ПОСЛЕ() с ТЕКСТ.ДО():

=ТЕКСТ.ДО(ТЕКСТ.ПОСЛЕ(A2;"utm_medium=");"&")
Как обработать URL без параметров?

Если в ссылке нет символа ? или #, функции ТЕКСТ.ПОСЛЕ()/ТЕКСТ.ДО() вернут ошибку. Используйте конструкцию:

=ЕСЛИОШИБКА(ТЕКСТ.ПОСЛЕ(A2;"?");"")

3. Разделение ссылок по столбцам (текст по разделителю)

Если URL имеют фиксированную структуру (например, всегда содержат /product/ или ?id=), можно использовать инструмент Текст по столбцам:

  1. Выделите столбец со ссылками.
  2. Перейдите на вкладку ДанныеТекст по столбцам.
  3. Выберите С разделителямиДалее.
  4. Укажите символы-разделители: /, ?, =, &.
  5. Нажмите Готово — Excel разобьёт URL на отдельные столбцы.

Этот метод подходит для однотипных ссылок, но имеет ограничения:

  • ❌ Не работает с динамическими URL (например, если количество слэшей варьируется).
  • ❌ Требует ручной настройки для каждого нового формата ссылок.
  • ✅ Быстро обрабатывает большие массивы данных (тысячи строк).
📊 Какой метод разделения URL вы используете чаще?
Формулы (ЛЕВСИМВ, ПСТР и др.)
Текст по столбцам
Power Query
VBA/Макросы
Другое

4. Автоматизация с Power Query (для сложных URL)

Power Query (доступен в Excel 2016+) позволяет разбирать ссылки с помощью разделения столбцов и извлечения текста по шаблону. Это идеальный инструмент для обработки неструктурированных URL с переменным количеством параметров.

Алгоритм действий:

  1. Выделите данные → ДанныеИз таблицы/диапазона (Power Query откроется в новом окне).
  2. Выделите столбец со ссылками → ПреобразоватьРазделить столбецПо разделителю.
  3. Укажите разделители: /, ?, =, &.
  4. При необходимости добавьте замену текста (например, удалите https://).
  5. Нажмите Закрыть и загрузить.

Преимущества Power Query:

  • 🔄 Обработка миллионов строк без замедления Excel.
  • 🔧 Гибкая настройка шагов (можно сохранять и повторно использовать).
  • 📊 Автоматическое обновление при изменении исходных данных.

Удалите пробелы в начале/конце ссылок|Замените нестандартные символы (например, %20 на пробел)|Проверьте кодировку (UTF-8)|Сохраните резервную копию данных

-->

5. VBA-макросы для массовой обработки ссылок

Если вам нужно регулярно обрабатывать тысячи URL с одинаковыми правилами, напишите макрос на VBA. Например, этот код извлекает домен и путь в отдельные столбцы:

Sub SplitURL()

Dim rng As Range, cell As Range

Dim protocolPos As Integer, domainStart As Integer, domainEnd As Integer, pathStart As Integer

Set rng = Selection ' Выделите столбец со ссылками перед запуском

For Each cell In rng

If InStr(1, cell.Value, "://") > 0 Then

protocolPos = InStr(1, cell.Value, "://") + 3

domainEnd = InStr(protocolPos, cell.Value, "/")

If domainEnd = 0 Then domainEnd = Len(cell.Value) + 1

' Домен

cell.Offset(0, 1).Value = Mid(cell.Value, protocolPos, domainEnd - protocolPos)

' Путь (если есть)

If domainEnd < Len(cell.Value) Then

cell.Offset(0, 2).Value = Mid(cell.Value, domainEnd)

End If

End If

Next cell

End Sub

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (InsertModule).
  3. Выделите столбец со ссылками и запустите макрос (F5).
⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов) и проверьте настройки безопасности (ФайлПараметрыЦентр управления безопасностью).

6. Обработка ссылок с регулярными выражениями (для продвинутых)

Для сложных URL с нестандартными форматами (например, https://user:pass@example.com:8080/path?query=1#fragment) используйте регулярные выражения через VBA. Функция ниже извлекает протокол, домен, порт, путь и параметры:

Function ParseURL(url As String, part As String) As String

Dim regex As Object, matches As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "^(?:([^:/?#]+):)?(?://([^/?#]))?(?:([^?#]))?(?:\?([^#]))?(?:#(.))?$"

regex.Global = False

If regex.Test(url) Then

Set matches = regex.Execute(url)

Select Case part

Case "protocol": ParseURL = matches(0).SubMatches(0)

Case "domain": ParseURL = matches(0).SubMatches(1)

Case "path": ParseURL = matches(0).SubMatches(2)

Case "query": ParseURL = matches(0).SubMatches(3)

Case "fragment": ParseURL = matches(0).SubMatches(4)

End Select

End If

End Function

Пример использования в Excel:

=ParseURL(A2; "domain")  ' Вернёт домен

Регулярные выражения позволяют:

  • 🎯 Точно извлекать любые части URL по шаблону.
  • 🔄 Обрабатывать нестандартные форматы (например, ftp:// или mailto:).
  • ⚡ Работать с кодированными символами (%20, %3F).

FAQ: Частые вопросы о разделении ссылок в Excel

Можно ли разделить URL без формул?

Да, используйте инструмент Текст по столбцам (меню Данные) или Power Query для визуального разделения. Также подойдёт Flash Fill (быстрое заполнение) в Excel 2013+: введите пример результата в соседнем столбце и нажмите Ctrl + E.

Как извлечь UTM-метки из 10 000 ссылок?

Для больших объёмов данных используйте Power Query:

  1. Загрузите данные в Power Query.
  2. Разделите столбец по символу ?, затем по & и =.
  3. Отфильтруйте строки с utm_.

Альтернатива — VBA-макрос с циклом по диапазону.

Почему формула ПСТР возвращает ошибку #ЗНАЧ?

Ошибка возникает, если:

  • В ссылке отсутствует искомый символ (например, нет ? для параметров).
  • Позиция начала или длины выходит за пределы строки.

Решение: оберните формулу в ЕСЛИОШИБКА() или добавьте проверку с ЕСЛИ().

Как разделить ссылки в Google Sheets?

В Google Таблицах используйте аналогичные функции:

  • =REGEXEXTRACT(A2; "https?://([^/]+)") — для домена.
  • =SPLIT(A2; "/") — для разделения по слэшам.

Также доступен инструмент Разделить текст на столбцы (меню Данные).

Можно ли автоматически обновлять разделенные данные при изменении исходных URL?

Да, если использовать:

  • Power Query — данные обновляются при нажатии Обновить.
  • Формулы — результаты пересчитываются автоматически.
  • VBA — добавьте макрос в событие Worksheet_Change для мгновенного обновления.