Power Query Продвинутый №26. Множественная замена текста c List.Accumulate и VBA

Поделиться
HTML-код
  • Опубликовано: 6 окт 2024
  • В этом уроке мы научимся делать множественную текстовую замену с помощью Power Query. Для этого мы воспользуемся функцией List.Accumulate. Также разберем как решить эту задачу при помощи VBA.
    Файлы для спонсоров Boosty: boosty.to/comr...
    Файлы для спонсоров ВК: comrade...
    Файлы для спонсоров RUclips: • Post
    Индивидуальное обучение: comrade-xl.ru/...
    Страница урока на сайте: comrade-xl.ru/...

Комментарии • 30

  • @comrade_excel
    @comrade_excel  4 года назад

    Файлы для спонсоров Boosty: boosty.to/comrade-xl/posts/64e47e93-9e56-40e7-b011-8380601b2c80?share=post_link
    Файлы для спонсоров ВК: vk.com/comrade.excel?w=wall-185123800_184
    Файлы для спонсоров RUclips: ruclips.net/user/postUgx1RSidhz6OfEEDaNB4AaABCQ
    Индивидуальное обучение: comrade-xl.ru/pq-training/
    Страница урока на сайте: comrade-xl.ru/2020/05/20/power-query-multiple-text-replacement-list-accumulate-vba/

  • @ИгорьСлободчиков-б2ъ
    @ИгорьСлободчиков-б2ъ 4 года назад +5

    Подписан, смотрю, учусь. Так держать, продолжайте в том же духе. Пополнил ряды спонсоров. Поддержим автора стаканом кофе в месяц.)

    • @comrade_excel
      @comrade_excel  4 года назад

      Большое спасибо за поддержку!

  • @АлександрСудиловский-ж4й

    Одно из самых полезных видео на каналеУже протестировал и адаптировал код под свои данные))
    Огромное спасибо,Тимур!)

    • @comrade_excel
      @comrade_excel  4 года назад

      Пожалуйста!

    • @АлександрСудиловский-ж4й
      @АлександрСудиловский-ж4й 4 года назад

      @@comrade_excel Кстати,данный код также адаптировал под поиск запрещенных символов)
      В столбец найти вношу запрещённые символы а в столбец заменить служебное 'WARNING' далее настраиваю фильтр на содержит 'WARNING' и программа возвращает мне список с запрещенными символами)

  • @lic_dema
    @lic_dema 11 месяцев назад

    Это очень круто, спасибо

  • @ДенисМи-ц9й
    @ДенисМи-ц9й Год назад +3

    9:03 Я решил проблему с порядком значений в таблице Замена1. В эту таблицу я добавил столбец "Длина строки" с формулой Text.Length([Найти]) и отсортировал по этому столбцу в порядке убывания. Теперь значения можно вставлять в произвольном порядке, не заморачиваясь с порядком.

  • @РоманКовков-к8у
    @РоманКовков-к8у 4 года назад +1

    А вот и долгожданное применение List.Accumulate(). Спасибо! Как всегда информативно и интересно. Но код уже не простой для восприятия; как же в PQ не хватает регулярок для таких целей...

    • @comrade_excel
      @comrade_excel  4 года назад

      А как же этот урок ruclips.net/video/MsvP4-NoX-k/видео.html
      В нем тоже было про List.Accumulate.

    • @РоманКовков-к8у
      @РоманКовков-к8у 4 года назад

      @@comrade_excel Пропустил его, заметил только сейчас, спасибо) Кстати, насчёт Text.Format - он, вроде бы, сам трансформирует все из {...} в текст, специально можно не прописывать.

  • @AhmedAriem
    @AhmedAriem 2 года назад

    Добрый день,Тимур! то что ВЫ делаете это просто бомба, спасибо Вам, очень хотелось чтобы ВЫ записали видео про функцию List.TransformMany? это функция сложная очень и не понятная, заранее благодарю!

    • @comrade_excel
      @comrade_excel  2 года назад

      Добрый день! В будущем планирую видео на эту тему.

  • @mdbm500
    @mdbm500 2 года назад

    C недавних пор я стал совмещать VBA и PQ. Т.е., в файле находится кнопка запускающая макрос, работник указывает пути к исходным папкам/файлам и нажимает кнопку, макрос собирает данные, что-то дорабатывает и запускает обновление книги, тогда начинается основная работа в PQ. Можно сделать, что бы макрос подождал окончания обновлений и продолжил какую-то работу, но так пока не приходилось делать.

  • @teimurazgagua614
    @teimurazgagua614 2 года назад

    Здравствуйте Тимур, В первую очередь спасибо Вам за отличные курсы.
    Скажите пожалуйста, в таблице "справочник" где находятся записи что на что менять, сколько максимум записей можно включать?
    Спасибо за ранее 🥰👍

  • @СергейЩепилин
    @СергейЩепилин 2 месяца назад

    а как сделать перенос строки?

  • @IrinaIrins-ep5rt
    @IrinaIrins-ep5rt Год назад

    Здравствуйте! Подскажите, похожим методом можно заменять числовые значения?

  • @nikbo6863
    @nikbo6863 4 года назад

    Тимур, добрый вечер. Видео супер! Немного запутался, подскажите, пожалуйста, если в таблице [Замена_1] будет три столбца {+Добавить Маркировку} (таблица будет выглядеть так: [Замена_1,{Найти, Заменить, Добавить Маркировку}]), то как будет выглядеть формула в Шаге #Пользовательская (13 минута видео), если нужно добавить третий столбец из [Замена_1] рядом со столбцом Пользовательская. Именно без дополнительных шагов объединения и/или заранее объединения столбцов {Заменить, Добавить Маркировку}, а потом их разделения.... ведь точно есть более легкий способ...
    Спасибо

    • @comrade_excel
      @comrade_excel  4 года назад

      Как выглядит этот третий столбец?

    • @nikbo6863
      @nikbo6863 4 года назад

      @@comrade_excel Доброе утро. На основании из приложенного примера(файл ПУСТОЙ) в Запрос ЗАМЕНА_1 добавим столбец (например, ДОБАВИТЬ МАРКИРОВКУ) можно ли в формулу сразу дописать добавление вот этого третьего столбца?
      cloud.mail.ru/public/2NUX/5MwPEJGQ3

    • @nikbo6863
      @nikbo6863 4 года назад

      Извините, в ЗАМЕНУ_2 нужно было третий столбец вставлять (так как мы в ЗАМЕНЕ_1 quot & "" правим), но идея идентичная.

    • @comrade_excel
      @comrade_excel  4 года назад

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

    • @nikbo6863
      @nikbo6863 4 года назад

      @@comrade_excel Отдельная формула - это новый шаг, правильно? В отдельной формуле это уже через MERGE будет? Как тогда быть со скоростью загрузки (Table.Buffer), как ее оставить на том же уровне?

  • @Rusia-16
    @Rusia-16 Год назад

    Мне VBA язык больше понятен чем язык М. Я бы в нем сделал.

  • @Ямайнер-е1д
    @Ямайнер-е1д 4 года назад

    Пытался внести изменения без добавления столбца, но не работает. Может в таких видео Вам лучше копировать столбец, а потом писать там код преобразования данных.
    = Table.TransformColumns(#"Измененный тип", {{"Агент", each List.Accumulate(
    List.Positions(Замена[Найти]),
    [Агент],
    (state, current)=>
    Text.Replace(
    state,
    Замена[Найти]{current},
    Замена[Заменить]{current}
    ))}})
    Что не так?

    • @Ямайнер-е1д
      @Ямайнер-е1д 4 года назад

      Пишет не удается применить доступ в полях типа text.

    • @comrade_excel
      @comrade_excel  4 года назад

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

    • @nbuhblhfrjy
      @nbuhblhfrjy 3 года назад

      В List.Position поставьте вместо [Агент] знак нижнего подчёркивания. _
      И все получится.