Я обнаружил, что формулы и диапазоны условного форматирования будут автоматически корректироваться при копировании, удалении или перемещении данных в электронной таблице. Хотя это хорошая идея, она имеет тенденцию ломать вещи для меня довольно странными способами.
Чтобы избежать этого, я попытался написать правила, которые применялись ко всей электронной таблице и отсеивали заголовки столбцов, чтобы выделить данные, которые я хотел проверить.
Пример: =AND(A$1="Check This Column For Blanks),ISBLANK(A1))
применяется к=$1:$1048576
Однако, даже если правило явно применялось ко всему листу, оно все равно автоматически корректировалось (и таким образом нарушалось), как я работал на листе.
Как я могу избежать этого?
Ответы:
Когда мне нужен диапазон, который не должен изменяться ни при каких обстоятельствах, включая перемещение, вставку и удаление ячеек, я использовал именованный диапазон и
INDIRECT
функцию.Например, если я хочу, чтобы диапазон всегда применялся к ячейкам
A1:A50
, я определил именованный диапазон с помощью диспетчера имен:В диспетчере имен добавьте новый диапазон (нажмите «Создать»), а в поле «Относится к:» используйте функцию INDIRECT, чтобы указать необходимый диапазон ячеек, например,
=INDIRECT("A1:A50")
или=INDIRECT("Sheet!A1:A50")
. Поскольку диапазон технически является просто текстовым аргументом, никакое количество перестановок ячеек не заставит Excel обновить его.Кроме того, это работает по крайней мере в Excel 2010 и Excel 2013. Хотя мой скриншот с 2013 года, я использовал эту точную технику в 2010 году в прошлом.
Предостережения
Имейте в виду, что эта неизменность также может сбить вас с толку. Например, если вы измените имя листа, именованный диапазон будет нарушен.
Я заметил незначительное снижение производительности при использовании этой стратегии на значительном количестве ячеек. Модель, которую я использую на работе, использует эту технику с именованными диапазонами, которые охватывают несколько тысяч разнородных диапазонов ячеек, и Excel обновляет немного вялый, когда я обновляю ячейки в этих диапазонах. Это может быть моим воображением, или это может быть факт, что Excel выполняет дополнительные вызовы функций, чтобы НЕПОСРЕДСТВЕННО.
источник
INDIRECT
функцию самостоятельно?Я обнаружил, что правила очень легко нарушить, но есть кое-что, что вы можете попробовать, но, кажется, не нарушаете никаких правил.
Вы можете изменить текст внутри ячеек. Если вам нужно добавить строку, добавьте свои данные в конец таблицы и пересортируйте ее. Если вам нужно удалить строку, удалите только текст / цифры, а затем пересортируйте таблицу.
Это работает для меня, когда у меня есть условное форматирование, которое применяется к столбцам, и я обычно устанавливаю форматирование для всего столбца, например. $ F: $ F. Он все равно должен работать, если вы форматируете для неполного диапазона, просто убедитесь, что после добавления / удаления и применения всех данных, которые вы хотите отформатировать, все еще в пределах ваших исходных параметров диапазона.
Это очень большое разочарование для меня.
Надеюсь, это поможет.
источник
Я не ТАК уверен, и часто сталкиваюсь с одной и той же проблемой.
Я бы сказал, что поле «Применить к» на панели условного форматирования (CF) ВСЕГДА будет работать динамически. Таким образом, он ВСЕГДА преобразует любые ссылки в формат
=$A$1:$A$50
.Это боль.
источник
Я обнаружил, что использование
INDIRECT
функции иROW
функции в правиле условного форматирования устраняет проблему создания в Excel новых правил и изменения диапазона.Например, я хотел добавить строку между строками в моей электронной таблице регистра чековой книжки, когда месяц менялся с одной строки на другую. Итак, моя формула в правиле CF:
где столбец C в моей электронной таблице содержит дату. Мне не нужно было делать ничего особенного для диапазона (не нужно было определять имя диапазона и т. Д.).
Поэтому в примере исходного плаката вместо «A1» или «A $ 1» в правиле CF используйте:
источник
Я столкнулся с очень похожей проблемой. Я сделал несколько макросов, чтобы добавить строки и скопировать формулы, а затем настроить столбцы и размеры строк, чтобы отформатировать внешний вид листа. Я обнаружил, что эта проблема возникает в одном из двух случаев.
1) Когда что-то из INSIDE «относится к» вырезано / вставлено за пределы этого диапазона.
2) Когда есть объединенные ячейки внутри «относится к», и любые строки или столбцы корректируются.
Во время выпуска объединенной ячейки появляется, что Excel должен все разложить, пересчитать его условное приложение, настроить все ячейки (добавить или удалить строки или что-то еще), а затем снова их объединить. Это невидимо для нас, но, похоже, именно так оно и применяется.
Мысль, которая может помочь нам найти решение по этому вопросу.
-T
источник
У меня есть простое решение для этого.
Просто перейдите к ячейке, находящейся в диапазоне (той, которая не нарушена в диапазоне), нажмите «Формат по образцу» и вставьте весь столбец. Опять же, он покажет, где он сломался, вам просто нужно сделать «Форматировщик» для ячейки, которая нарушила диапазон. Теперь это может показаться слишком длинным, вы можете просто создать для этого простой макрос.
источник
В формуле условного форматирования используйте
R1C1
обозначение сINDIRECT
функцией:Пример 1:
If same row column A = 1
...Пример 2:
If same row column A = 2 AND next row column A = 3
...источник
Если вариант использования заключается в создании электронной таблицы отчета, то это должно работать хорошо:
Вы можете обойти чрезмерную полезность Excel с помощью пары одноразовых шагов настройки, если вы также хотите вручную выполнить простое обновление окончательных данных после выполнения всего ввода данных.
Предполагая, что ваши данные расположены нормально (в строках):
Input
. Не применяйте к нему условное форматирование. Не стесняйтесь перемещать значения к содержанию вашего сердца (например, удалить / вставить / копировать / вставить)Output
). Вручную скопируйте глобальное форматирование, например ширину столбцов и формат заголовка (не содержимое заголовков, а только форматирование).$A$1
в следующей формуле местоположение начала строки заголовка, затем скопируйте все столбцы и строки, которые вы хотите вывести:=IF(LEN(OFFSET(Input!$A$1,ROW()-1,COLUMN()-1))>0,OFFSET(Input!$A$1,ROW()-1,COLUMN()-1),"")
(IF(LEN(...)>0,...,"")
оператор необходим, потому что Excel также помогает определить типы данных для вас и0
в противном случае использует пустые ячейки, и эти-1
термины происходят от смещения в зависимости от порядковой семантики)Output
листу.Это копирует вашу
Input
таблицу данных наOutput
лист без каких-либо ссылок на ячейки, которые Excel будет автоматически вырезать, чтобы вы могли уверенно определить условное форматирование наOutput
листе.Вам просто нужно вручную расширить диапазон, к которому применяется формула на
Output
листе, при изменении размера вашихInput
данных.Я предлагаю вам избегать слияния любых клеток.
PS Этот вопрос задавался много раз (он также применяется в Google Sheets, который является клоном Excel), так что вы можете найти лучшее решение для своего варианта использования, просматривая их:
источник