Умовно відформатуйте комірку, якщо вона містить формулу


18

Чи можливо умовно відформатувати комірок, якщо комірка містить формулу (щоб попередити себе та інших користувачів під час оновлення комірки)?


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

Відповіді:


9

Для цього можна використовувати умовне форматування, використовуючи XLM та Range Names

У мене є довша стаття про використання XLM з іменами діапазону та умовного форматування для автоматичного форматування електронних таблиць відповідно до вмісту комірок

  1. Визначте ім'я діапазону IsFormula = GET.CELL (48, INDIRECT ("rc", FALSE))
  2. Застосуйте тестування комірок умовного форматування для формули, тобто = IsFormula з кольоровою заливкою

Вибачте, я досі не перевіряв вашу відповідь. Цей трюк простий і красивий. Прийнято! Спасибі. (До речі, посилання розірвано.)
Вільсон

Перевірено і це працює! Мені довелося знайти правильне визначення для італійської версії 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і використовую це у формулі, на всякий випадок, коли я коли-небудь повернусь через роки і думаю "для чого це чорт?".


Це правильна відповідь для Excel 2013 і пізніше, див support.office.com/en-us/article / ...
anishpatel

1
Замість використання INDIRECT("rc",FALSE)використовуйте відносне посилання на верхню ліву клітинку в умовному форматі діапазону "Застосовується до". Наприклад, якщо діапазон "Застосовується до" є =$A$3:$F$300, тоді використовуйте =ISFORMULA(A3). Це працює, тому що умовне форматування підтримує відносне посилання, дивіться це
Micah Lindström

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

Приклад:

Щоб перевірити, чи є якісь комірки у стовпці А, формули:

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

Non-VBA

  1. Натисніть F5або Ctrl+G
  2. Натисніть Спеціальний .
  3. Виберіть Формули та натисніть кнопку ОК . Це виділяє всі комірки на робочому аркуші, що містить формули.
  4. Налаштуйте потрібний формат.
    Або
    перейдіть до Стилів комірок (на вкладці Домашня сторінка) і виберіть стиль, який потрібно пов’язати з клітинами, що містять формули. Щоб змінити зовнішній вигляд, клацніть правою кнопкою миші вибраний стиль та натисніть Змінити . Усі комірки, надані в цьому стилі, будуть автоматично оновлені.

хоча я особисто не вважаю за краще використовувати 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?
торіан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.