Как я могу узнать, содержит ли ячейка в Excel число / текст или формулу? - PullRequest
2 голосов
/ 09 апреля 2010

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

Возможно ли это в Excel 2007?

Ответы [ 4 ]

3 голосов
/ 09 апреля 2010

AFAIK, нет легкодоступной функции листа или условия для проверки формул. VBA предлагает метод range.HasFormula, который возвращает true, если каждая ячейка в диапазоне (которая может быть отдельной ячейкой) имеет формулу.

3 голосов
/ 09 апреля 2010

Вы можете использовать:

If (cell.HasFormula) then ..

Искать формулы.

(Это позволит избежать проблемы, связанной с полем литеральной строки, начинающимся с "=")

1 голос
/ 14 сентября 2011

Я понимаю, что это было неактивно более года, но, учитывая неоднократные комментарии о надежде избежать VBA I, хотя стоило опубликовать XLM с подходом Range Names.

рисунок по коду Дэвида Хагера из http://j -walk.com / ss / excel / eee / eee003.txt

  1. Определение имени диапазона, к которому IsFormula относится: = GET.CELL (48, INDIRECT ("rc", FALSE))
  2. Добавьте правило условного форматирования «используя формулу, чтобы определить, какие ячейки форматировать» = IsFormula к интересующему диапазону и выберите цвет

И все готово

Историческое преимущество использования XLM заключалось в том, что он допускал кодирование, подобное VBA, без предоставления предупреждений макросов. Наличие XLM теперь помечает подобное предупреждение о содержимом, но все же полезно иметь возможность применять эти приемы условного форматирования XLM без необходимости инициировать событие VBA в фоновом режиме.

Я написал более длинную статью об использовании XLM / Имена диапазонов / Условное форматирование для идентификации внешних ячеек, ссылок на листы, формул и т. Д. И несовместимых формул по адресу http://www.experts -exchange.com / A_7629.html (обратите внимание, что это находится за пределами платного доступа EE, оно свободно доступно без членства)

1 голос
/ 09 апреля 2010

Только для справки (и для голосования :-)), я наконец решил автоматическую раскраску с VBA, без использования условного форматирования:

dim ws as Worksheet
for each ws in thisworkbook.sheets
  ws.Cells.SpecialCells(xlCellTypeFormulas).Font.ThemeColor = xlThemeColorAccent1
next ws

у меня отлично работает. (Найдено здесь )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...