Условное форматирование без обновления области приложения в таблице (объект списка) - PullRequest
0 голосов
/ 15 января 2019

Ну, я нашел что-то странное, и сейчас я немного шокирован.

У меня есть несколько файлов Excel, и обычно мы используем таблицы для хранения данных (таблицы, я имею в виду ListObjects), и мы применяем правила условного форматирования, поэтому, когда в таблицу вставляется новая строка, правило условного форматирования мгновенно расширяется:

enter image description here

Если я вставлю новую строку в эту таблицу, мое правило условного форматирования мгновенно будет применено к новой строке.

enter image description here

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

Теперь у меня есть другой файл с другой информацией, но это та же идея. Таблица, данные и условное форматирование.

enter image description here

Данные - это просто список счетов (извините, но мне пришлось удалить номера НДС и названия компаний для конфиденциальности). Столбец C представляет собой формулу VLOOKUP в сочетании с IFERROR. Он ищет название компании (название компании в столбце D) и, если что-то найдено, возвращает номер НДС. Если нет, он возвращает значение No encontrado. Формула отлично работает.

Теперь я создал правило условного форматирования, которое, если значение в столбце C равно No encontrado, выделяет желтым цветом все ячейки в строке. Это правило тоже отлично работает. Мы использовали его тысячу раз.

Теперь начинается странная часть. Если я вставляю новую строку и строка промежуточных итогов не активна в таблице, мое правило условного форматирования InstantLT применяется к новой строке. И это прекрасно!

enter image description here

Как вы можете видеть на изображении выше, новая строка желтая, потому что формула ничего не может найти, потому что ячейка компании пуста. Это прекрасно и работает хорошо.

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

enter image description here

Как вы можете видеть на изображении выше, последняя строка показывает значение No encontrado, но правило условного форматирования не применяется. Поэтому я должен вручную обновить область применения правила условного форматирования.

Давайте вернемся к первому файлу, который я показал на первых 2 изображениях этого вопроса. Если вы проверяете второе изображение, строка промежуточных итогов активна, но область применения правила условного форматирования обновляется.

Итак, мой вопрос. Почему в этом втором файле мое правило условного форматирования не обновляет область приложения, если я вставляю новую строку с активной строкой промежуточных итогов?

Вещи, которые я знаю, не являются проблемой:

  • Оба файла имеют формат xlsx, поэтому макросы или VBA не влияют.
  • Оба файла были созданы в одной и той же версии Excel и на одном компьютере.

Вещи, которые я пробовал:

  • Создание файла снова, начиная с нуля. Это ничего не решило.

Заранее спасибо. Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать.

ОБНОВЛЕНИЕ : Ну, я провел некоторое исследование и кое-что обнаружил. Похоже, списки валидации данных блоков условного форматирования автоматически расширяются. В Columnd D (название компании) я создал выпадающий список проверки данных. Пользователи выбирают компанию. Эта проверка данных блокирует условное форматирование из области обновления приложения. Если я отключу проверку данных в этом столбце, то правило CF будет работать идеально даже при активной строке промежуточных итогов.

Есть идеи, как бороться с этой ошибкой? Я знаю, что могу исправить это с VBA, но я пытаюсь найти решение без VBA. Я хотел бы, чтобы файл был XLSX. Кроме того, в этой компании они никогда не обновляют программное обеспечение, поэтому решение должно работать для Excel 2007.

ОБНОВЛЕНИЕ № 2: Мое правило CF просто проверяет, отображается ли в столбце C значение No encontrado. Если он найден, он выделяет желтым цветом все ячейки в этом ряду таблицы:

enter image description here

Формула, которую я использую: =IF($C11="No encontrado";TRUE;FALSE)

Это правило CF применяется ко всей таблице (сейчас это диапазон =$A$11:$K$609

И формула в столбце C:

=IFERROR(VLOOKUP([PROVEEDOR];T_PROVEEDORES;2;FALSE);"No encontrado"). Он ищет значение в ячейке D в другой таблице с именем T_PROVEEDORES. Если ничего не найдено, то возвращается No encontrado.

В столбце D приведен просто выпадающий список с разными названиями компаний.

Кроме того, в столбце D я получил раскрывающийся список проверки данных компаний. Заранее спасибо.

ОБНОВЛЕНИЕ № 3 : Я загрузил образец файла в мой GD. Я удалил всю информацию о конфиденциальности и использовал общие имена.

Скачать файл

В файле примера рабочего листа COMPRAS есть таблица. Если вы вставите новую строку с помощью клавиши TAB , а строка промежуточных итогов не активна , новая строка будет выделена желтым цветом, и вот как она должна работать.

Но если вы сделаете то же самое с активной строкой промежуточных итогов , то теперь она работает. Правило CF не обновляет область приложения.

1 Ответ

0 голосов
/ 01 февраля 2019

Хорошие новости и плохие новости.

Плохая новость заключается в том, что на самом деле это проблема в Excel 2007, которая была исправлена ​​в более поздних версиях.

Хорошая новость - ответ есть, но не самый чистый. Сделайте так, чтобы диапазон вашего условного форматирования включал всю таблицу: Conditional Formatting workaround

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

...