Страницы: 1
RSS
Power Query. Если обновить запрос, заливается цветом весь столбец. Почему?
 
Добрый день!
Необходимо было реализовать сравнение двух таблиц из разных книг (неких выгрузок из БД). Для сравнения результатов применил условное форматирование и для удобства решил обернуть значение в одном из столбцов в формулу ГИПЕРССЫЛКА с поиском необходимого диапазона на другом листе. Гиперссылки нужны только в строках, где есть отличия. Делается это макросом по событию Worksheet_Change. В скрипте сначала производится очистка форматирования Нужного диапазона. На одном из листов все отрабатывает хорошо, но на другом "протягивается" формат первой ячейки в столбце и все имеют синий цвет текста и нижнее подчеркивание.
Подскажите как можно решить эту проблему. Событий у ListObject не нашел. Пока приходит на ум только  запуск скрипта по таймеру с помощью SetTimer и сброс формата при помощи условного форматирования. Может есть какое-то более красивое решение? Получается макрос отрабатывает раньше, чем "протягиваются" форматы или это просто глюк?

Excel 2016

Спасибо!
 
Добрый день.
не очень пока понятно, а причем тут Power Query?
Вот горшок пустой, он предмет простой...
 
Есть предположение что применение форматов реализовано на стороне Power Query. Видимо я не верно задал вопрос
 
Цитата
ArtGo написал:
применение форматов реализовано на стороне Power Query.
Вы бы для начала прочитали про Power Query, что ли...Она вообще к форматам на листах самое последнее отношение имеет.
Ну и без файла примера проблема совсем непонятна. Неясно, что именно написано в Worksheet_Change. Неясно где именно это применяется - в обоих случаях в умных таблицах или в разных.
А название темы вообще далеко от проблемы и ничего общего с написанным в первом сообщении текстом не имеет. В названии темы речь про загрузку, а в описании про это ну вообще ни слова. Какая-то связь вообще есть или нет?  
Изменено: Дмитрий(The_Prist) Щербаков - 22.01.2021 16:46:30
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Вы бы для начала прочитали про Power Query, что ли...
Да я с радостью! Я не нашел источника, который бы раскрывал интересующий меня вопрос, иначе не писал бы сюда. Что почитать? Спецификацию языка М, описание формул или что? Тема не в кассу, согласен, уже написал выше.
Изменено: ArtGo - 22.01.2021 17:05:46
 
Цитата
ArtGo написал:
Я не нашел источника, который бы раскрывал интересующий меня вопрос
Для решения вашего вопроса приложите файл-пример, иллюстрирующий проблему, и покажите в нем какого результата нужно добиться. Если вам нужно после обновления таблицы, которая является результатом запроса PQ, добавить столбец с формулой, то это вообще можно реализовать без макросов. Тут по этому вопросу имеется с десяток тем. Если нужно что-то другое, то опишите понятными словами и покажите пример.
Вот горшок пустой, он предмет простой...
 
В файле 2 таблицы. Вторая - это копия первой, обновляемая через запрос. Первая ячейка в первом столбце залита желтым. Если обновить запрос,заливается весь столбец. ПОЧЕМУ?
 
Цитата
ArtGo: ПОЧЕМУ?
скорее всего, закрасив первую ячейку, вы задали "псевдостиль" и при выгрузке он просто повторяется
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Почему только для первой ячейки? Выгрузка результатов производится построчно?
 
Проведите самостоятельное исследование различных свойств: правая кнопка мыши по целевой таблице, Таблица / Свойства внешних данных.
Владимир
 
Спасибо, мил человек! Коротко и по делу). Проблема решена
Изменено: ArtGo - 22.01.2021 18:22:32
 
Цитата
ArtGo написал:
Если обновить запрос,заливается весь столбец.
Обновил. Не заливается. Что я делаю не так?
Вот горшок пустой, он предмет простой...
 
Цитата
ArtGo написал:
Получается макрос отрабатывает раньше, чем "протягиваются" форматы
Узнать о завершении события обновления данных можно так (в Вашем случае). В модуль листа книги.
Код
Dim WithEvents qt As QueryTable

Private Sub qt_AfterRefresh(ByVal Success As Boolean)
  MsgBox "Обновлены данные"
End Sub

Private Sub Workbook_Open()
  Set qt = ThisWorkbook.Worksheets(1).ListObjects("TableA_2").QueryTable
End Sub
Владимир
 
Проверьте о чем писал Sokol92 выше.
Изменено: ArtGo - 22.01.2021 18:28:45
 
Цитата
sokol92 написал:
Узнать о завершении события обновления данных можно так (в Вашем случае). В модуль листа книги.
Спасибо))). Работает!
 
Цитата
ArtGo написал:
Проверьте
Проверил, у меня и с активной и с неактивной галочкой формат на весь столбец не распространялся.
Цитата
ArtGo написал:
Работает!
Я бы еще рекомендовал отключать фоновое обновление. Для маленьких таблиц оно не заметно, а для больших на вывод строк может уходить много времени.
Код
ThisWorkbook.Sheets(2).ListObjects("TableA_2").QueryTable.Refresh BackgroundQuery:=False

В настройках запроса регулируется здесь.
Вот горшок пустой, он предмет простой...
 
Спасибо!
Страницы: 1
Наверх