Сталкивались ли вы с ситуацией, когда нужно обработать данные, где слова написаны без пробелов? Например, такие строки как «ЗакупкаУПоставщика» выглядят нечитаемыми и неудобными для дальнейшей работы. В этой статье мы рассмотрим простой способ решения данной проблемы при помощи инструмента Power Query от Microsoft Excel или Power BI.
Что мы будем делать?
- Добавим пробелы между словами, начинающимися с заглавной буквы.
- Переведем все буквы, кроме первой, в нижний регистр (строчные).
- Сделаем исключение для аббревиатур.
- Создаем переменную "Данные", в которую один раз сохраняем данные для преобразования.
- Сохраняем первую букву в переменой "ПерваяБуква" с помощью функции Text.Start.
- Сохраняем все остальные букву в переменой "ОстальныеБуквы" с помощью функции Text.Middle.
- В переменной "Пробелы" добавляем пробелы перед заглавными буквами, для этого:
- Преобразуем "ОстальныеБуквы" в список отдельных символов с помощью функции Text.ToList.
- Если символ является заглавной буквой, перед ним добавляется пробел. Для этого используем функцию List.Transform, которая последовательно применяет заданную операцию (добавление пробела перед заглавными буквами) к каждому элементу списка символов, для этого нам помогут следующие функции:
- Для проверки каждого символа на принадлежность списку заглавных букв используем функцию Text.Upper.
- А в случае, если буква заглавная, чтобы сцепить ее с остальным текстом, который переведем в нижний регистр, используем функцию Text.Lower.
- Сцепляем все полученные символы в строку с помощью функции Text.Combine.
- Сцепляем первую букву и все остальное буквы.
- Замещаем последовательность "е а э с" на "ЕАЭС" с помощью функции Text.Replace
Вариант без комментариев:
Данные = [Операция],
ПерваяБуква = Text.Start(Данные, 1),
ОстальныеБуквы = Text.Middle(Данные, 1),
Пробелы = Text.Combine(
List.Transform(
Text.ToList(ОстальныеБуквы),
each if _ = Text.Upper(_) then " " & Text.Lower(_) else _ ) ),
Сборка = ПерваяБуква & Пробелы,
ТекстФинал = Text.Replace(Сборка, "е а э с", "ЕАЭС")
in
ТекстФинал
Ниже формула с комментариями:
Данные = [Операция],
// Сохраняем первую букву в переменой:
ПерваяБуква = Text.Start(Данные, 1),
// Сохраняем все остальные букву в переменой:
ОстальныеБуквы = Text.Middle(Данные, 1),
// Добавляем пробелы перед заглавными буквами:
Пробелы = Text.Combine(
// Функция последовательно применяет заданную операцию (добавление пробела перед заглавными буквами) к каждому элементу списка символов:
List.Transform(
// Исходная строка преобразуется в список отдельных символов:
Text.ToList(ОстальныеБуквы),
// Каждый символ проверяется на принадлежность списку заглавных букв. Если символ является заглавной буквой, перед ним добавляется пробел:
each if _ = Text.Upper(_) then " " & Text.Lower(_) else _ ) ),
// Сцепляем первую букву и все остальное буквы, которые переводим в нижний регистр:
Сборка = ПерваяБуква & Пробелы,
// Замещаем последовательность "е а э с" на "ЕАЭС":
ТекстФинал = Text.Replace(Сборка, "е а э с", "ЕАЭС")
in
ТекстФинал
Вид функции в Расширенном редакторе запросов:

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