Excel обычно обрабатывает формулы условного форматирования, как если бы они были формулами массива, , за исключением , при загрузке их из файла XML-таблицы Excel 2002/2003.
Эта проблема возникает только в формате XML-таблицы Excel 2002/2003 ... собственный формат Excel работает нормально, как и новый формат Excel 2007 XML (xlsx).
После загрузки электронной таблицы можно заставить ее работать правильно, выбрав форматированный диапазон, перейдя в диалоговое окно «Условное форматирование» и нажав «ОК», но это только устраняет проблему для сеанса.
Контрольный пример:
Введите следующее в новый лист:
A B C
1 N N N
2 x x x
3 x x x
Создайте формулу условного формата для ячеек A1: C1 (ваш выбор симпатичных цветов для формата):
=(SUM(($A1:$C1="N")*($A$2:$C$2=A$3))>0)
Это формула массива, которая активируется для A1, B1 и C1, когда любой из них имеет "N", а ячейка в строке 2 ниже "N" равна ячейке в строке 3 текущего столбца.
(Это было упрощено из реальной бизнес-таблицы. Извините за сложность тестового примера, я пытаюсь найти более простой тестовый пример для представления здесь.)
И это работает ... вы можете изменить N или X любым удобным для вас способом, и форматирование работает просто отлично.
Сохраните это как электронную таблицу XML. Закройте Excel и заново откройте файл. Форматирование теперь не работает. Теперь вы можете активировать условное форматирование, только если A1 - это «N», а A2 такое же, как A3, B3 или C3. Значения B1, B2, C1 и C2 не влияют на форматирование.
Теперь выберите A1: C1 и посмотрите на формулу условного форматирования. Точно так же, как и раньше. Хит ОК. Условное форматирование снова начинает работать и будет работать в течение всего сеанса, когда файл открыт.
Обходные пути рассматриваются:
Предоставление файла в собственном (BIFF) формате Excel. Не вариант, эти таблицы генерируются на лету веб-сервером, и это только один из десятков типов рабочих книг, динамически генерируемых нашей системой.
Предоставление файла в собственном формате XML Excel 2007 (xlsx). Не вариант, текущая база пользователей не имеет Office 2007 или подключаемого модуля совместимости.
Попросив пользователей выбрать диапазон, войдите в диалоговое окно «Условное форматирование» и нажмите «ОК». Не вариант в этом случае, неискушенные пользователи.
Попросить пользователей открыть электронную таблицу XML, сохранить ее как собственный XLS, закрыть и заново открыть файл XLS. Это не работает! Форматирование остается поврежденным в собственном формате XLS, если оно было загружено неработающим из файла XML. Если (3) выше выполнить перед сохранением, файл XLS будет работать правильно.
В итоге я переписал условное форматирование, чтобы не использовать формулы массива. Так что я думаю, что это в некоторой степени «ответ», но это все еще недокументированная, хотя и неясная, ошибка в обработке XML-файлов в Excel 2002/2003.