Ну, я нашел что-то странное, и сейчас я немного шокирован.
У меня есть несколько файлов Excel, и обычно мы используем таблицы для хранения данных (таблицы, я имею в виду ListObjects), и мы применяем правила условного форматирования, поэтому, когда в таблицу вставляется новая строка, правило условного форматирования мгновенно расширяется:
Если я вставлю новую строку в эту таблицу, мое правило условного форматирования мгновенно будет применено к новой строке.
Как вы можете видеть на втором изображении, новая строка была вставлена, и она становится красной, потому что наши правила условного форматирования. Это прекрасно работает.
Теперь у меня есть другой файл с другой информацией, но это та же идея. Таблица, данные и условное форматирование.
Данные - это просто список счетов (извините, но мне пришлось удалить номера НДС и названия компаний для конфиденциальности). Столбец C представляет собой формулу VLOOKUP в сочетании с IFERROR. Он ищет название компании (название компании в столбце D) и, если что-то найдено, возвращает номер НДС. Если нет, он возвращает значение No encontrado
. Формула отлично работает.
Теперь я создал правило условного форматирования, которое, если значение в столбце C равно No encontrado
, выделяет желтым цветом все ячейки в строке. Это правило тоже отлично работает. Мы использовали его тысячу раз.
Теперь начинается странная часть. Если я вставляю новую строку и строка промежуточных итогов не активна в таблице, мое правило условного форматирования InstantLT применяется к новой строке. И это прекрасно!
Как вы можете видеть на изображении выше, новая строка желтая, потому что формула ничего не может найти, потому что ячейка компании пуста. Это прекрасно и работает хорошо.
Теперь начинается странная часть, и я понятия не имею, как найти решение. Если мы вставим новую строку , но строка промежуточных итогов таблицы будет активной , тогда правило условного форматирования не будет применяться к новой строке!
Как вы можете видеть на изображении выше, последняя строка показывает значение No encontrado
, но правило условного форматирования не применяется. Поэтому я должен вручную обновить область применения правила условного форматирования.
Давайте вернемся к первому файлу, который я показал на первых 2 изображениях этого вопроса. Если вы проверяете второе изображение, строка промежуточных итогов активна, но область применения правила условного форматирования обновляется.
Итак, мой вопрос. Почему в этом втором файле мое правило условного форматирования не обновляет область приложения, если я вставляю новую строку с активной строкой промежуточных итогов?
Вещи, которые я знаю, не являются проблемой:
- Оба файла имеют формат xlsx, поэтому макросы или VBA не влияют.
- Оба файла были созданы в одной и той же версии Excel и на одном компьютере.
Вещи, которые я пробовал:
- Создание файла снова, начиная с нуля. Это ничего не решило.
Заранее спасибо. Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать.
ОБНОВЛЕНИЕ : Ну, я провел некоторое исследование и кое-что обнаружил. Похоже, списки валидации данных блоков условного форматирования автоматически расширяются. В Columnd D (название компании) я создал выпадающий список проверки данных. Пользователи выбирают компанию. Эта проверка данных блокирует условное форматирование из области обновления приложения. Если я отключу проверку данных в этом столбце, то правило CF будет работать идеально даже при активной строке промежуточных итогов.
Есть идеи, как бороться с этой ошибкой? Я знаю, что могу исправить это с VBA, но я пытаюсь найти решение без VBA. Я хотел бы, чтобы файл был XLSX. Кроме того, в этой компании они никогда не обновляют программное обеспечение, поэтому решение должно работать для Excel 2007.
ОБНОВЛЕНИЕ № 2: Мое правило CF просто проверяет, отображается ли в столбце C значение No encontrado
. Если он найден, он выделяет желтым цветом все ячейки в этом ряду таблицы:
Формула, которую я использую: =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 не обновляет область приложения.