Условно отформатируйте ячейку, если она содержит формулу

18

Можно ли условно отформатировать ячейку, если ячейка содержит формулу (чтобы предупредить себя и других пользователей при обновлении ячейки)?

Вильсон
источник
Если вы просто хотите быстро увидеть, какие ячейки содержат формулы, вы можете набрать Ctrl-`(это обратный тик, на той же клавише, что и на английской клавиатуре), чтобы отобразить формулы. Нажмите клавишу еще раз для переключения.
йо

Ответы:

9

Вы можете использовать условное форматирование, чтобы сделать это, используя XLM и Range Names

У меня есть более длинная статья об использовании XLM с именами диапазонов и условным форматированием для автоматического форматирования электронных таблиц в соответствии с содержимым ячейки

  1. Определить имя диапазона IsFormula = GET.CELL (48, INDIRECT ("rc", FALSE))
  2. Примените тестирование ячеек условного форматирования для формулы, т.е. = IsFormula с цветовой заливкой
brettdj
источник
Извините, я не проверял ваш ответ до сих пор. Этот трюк прост и красив. Принятый! Благодарю. (Кстати, ссылка не работает.)
Уилсон
Проверено и все работает! Мне нужно было найти правильное определение для итальянской версии Excel 2007. Если у вас итальянский Excel, вы должны использовать = INFO.CELLA (48; INDIRETTO ("rc"; FALSO)) (обратите внимание также на точку с запятой вместо запятых)
Kar.ma
Плохая часть заключается в том, что вам нужно сохранить его как файл макроса (например, .xlsm), и при открытии файла раскраска не отображается, пока вы не включите макросы.
Kar.ma
Раньше вы могли использовать xlmбез каких-либо предупреждений макросов, MSFT изменил подход безопасности.
brettdj
10

Основываясь на ответе brettdj, потому что мне было трудно следить за связанной статьей:

  1. Создайте новое правило условного форматирования и выберите « Использовать формулу», чтобы определить ячейки для форматирования.
  2. Вставьте следующую формулу: =ISFORMULA(INDIRECT("rc",FALSE))
  3. Если вы хотите, чтобы правило применялось ко всему рабочему листу, $1:$1048576в качестве диапазона, к которому нужно применить. В противном случае вы можете ввести любой диапазон.

Формула INDIRECT("rc",FALSE)возвращает ссылку на текущую ячейку. Если я когда-либо использую это в листе, я создаю Определенное имя, называемое чем-то вроде, ThisCellи использую это в формуле, на тот случай, если я когда-нибудь вернусь много лет спустя и подумаю «для чего, черт возьми, это?».

toryan
источник
Это правильный ответ для Excel 2013 и позже, см support.office.com/en-us/article/...
anishpatel
1
Вместо использования INDIRECT("rc",FALSE)используйте относительную ссылку с верхней левой ячейкой в ​​вашем условном формате «Применяется к» диапазону. Например, если ваш диапазон «Применяется к» =$A$3:$F$300, используйте =ISFORMULA(A3). Это работает, потому что условное форматирование поддерживает относительные ссылки, см. Это
Мика Линдстрем
4

Вы можете попробовать это:

VBA

Создайте пользовательскую функцию с помощью следующего кода:

Function IsFormula(ByVal Ref As Range) As Variant
    If Ref.Cells.Count > 1 Then
        IsFormula = CVErr(xlErrNA)
    Else
        IsFormula = Ref.HasFormula
    End If
End Function

Пример:

Чтобы проверить, имеют ли какие-либо ячейки в столбце A какие-либо формулы:

  1. Выделите столбец A
  2. Перейдите к Условному форматированию > Новое правило > Используйте формулу, чтобы определить, какие ячейки форматировать
  3. Используйте фф. формула:=IsFormula(A1)

Non-VBA

  1. Нажмите F5или Ctrl+G
  2. Нажмите Специальный .
  3. Выберите Формулы и нажмите ОК . Это выделяет все ячейки на листе, который содержит формулы.
  4. Установите формат, который вы хотите использовать.
    Или
    перейдите к стилям ячеек (на вкладке «Главная») и выберите стиль, который вы хотите связать с ячейками, содержащими формулы. Чтобы изменить внешний вид, щелкните правой кнопкой мыши выбранный стиль и выберите « Изменить» . Все ячейки данного стиля будут автоматически обновлены.
Ellesa
источник
хотя я лично не предпочитаю использовать VBA, решение VBA лучше в этом случае, потому что форматирование ячейки может изменяться динамически, когда формула вводится в ячейку (или наоборот). Благодарю.
Уилсон
4

Существует очень простой способ сделать это, протестированный в Excel 2016.

Выделите свой диапазон, к которому вы хотите применить это, скажем, от A3:W20. Зайдите в условное форматирование и выберите NEW RULE | USE A FORMULA TO DETERMINE WHICH CELLS TO FORMAT.

Вставьте =isformula(A3)и выберите формат, который вы хотите применить.

A3Очевидно, это ссылка на первую ячейку в вашем диапазоне, но это форматирование применяется ко всем. В результате в пределах вашего диапазона любая ячейка, которая является формулой, имеет условный формат.

Джо Дог
источник
1

Новые справочные сайты рекомендуют пользовательскую функцию:

Function IsFormula(cell) as boolean 
  IsFormula = cell.HasFormula
End Function

Затем используйте эту функцию как ваше условие

А на самом деле Excel 2013 и более поздние версии имеют IsFormulaв качестве стандартной функции.

Карл Виттофт
источник
-1

Вы также можете использовать условное форматирование:

  1. Выберите диапазон ячеек, к которым вы хотите применить ваше условное форматирование
  2. В начало -> Условное форматирование -> Новое правило: используйте формулу, чтобы определить ячейку для форматирования
  3. В значениях формата, когда эта формула верна, укажите: =HasNoFormula
  4. Выберите нужный формат

Протестировано с использованием Excel 2010.

Деконинк Флориан
источник
Ваш ответ неполон. Я не думаю, что вы проверили.
Уилсон
2
-1, это ничего не делает. Что должен делать HasNoFormula?
toryan