Дано: большая таблица с формулами,в которой время от времени необходимо в некоторых ячейках проставлять суммы вручную. Прошу помощи, как с помощью условного форматирования выделять ячейки,в которых формулы были заменены константами.
ikki пишет: удивительно, как люди, знающие лишь последнюю версию, берутся давать советы
Судя по порядку комментариев, это мне. Да вы, батенька, экстрасенс, однако. А в старых версиях ее не создать, не? Свой же совет перечитайте: http://www.planetaexcel.ru/techniques/11/107/#275 Последние три года Lotus изучаете?
Поаккуратнее с утверждениями и агрессией. Вы дали совет, без раскрытия сути. ЕФОРМУЛА только в 2013 появилась. В 2010 и ранее её еще нет. Поэтому раз дали совет - так и нюансы раскрывайте. Иначе заставляете людей искать то, чего у них нет. Вот Вы дали ответ. Человек с 2010 Excel идет и ищет ЕФОРМУЛА. Обыскал все - нету и все тут. Что он первым делом подумает? Верно. Что Вы ни фига не знаете. И отчасти будет прав. Т.к. Вы дали очень ужатый ответ, который учитывает одну конкретную версию Excel, которую Вы указать поленились. Ту ссылку, которую Вы дали во втором сообщении по идее надо было дать в первом, чтобы у человека было понимание, где эту формулу можно искать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
приведите код. или дайте ссылку. и учтите, что многие новички не в курсе, что для работы UDF надо разрешать макросы. а также то, что не везде это возможно.
тогда ответ будет полным. делов-то.
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Я на форуме (да и в Экселе) новичок, поэтому в дискуссию об этике вдаваться не буду
Код
Function ЭТО_ФОРМУЛА(Ячейка As Range) As Boolean
With Ячейка
If .Count > 1 Then
ЭТО_ФОРМУЛА = .Cells(1, 1).HasFormula
Else
ЭТО_ФОРМУЛА = .HasFormula
End If
End With
End Function
Вот такая простенькая функция способна заменить вышеупомянутую функцию из 2013 версии. При передаче в качестве аргумента не одной ячейки, а диапазона, она вернет данные для верхней левой ячейки. И да, макросы необходимо будет включить в настройках Центра управления безопасностью
ikki, возможно Вы правы, но что тогда считать более логичным для данной функции? Можно, чтобы при передаче ей диапазона ячеек,она возвращала #ссылка.
Код
Function ЭТО_ФОРМУЛА(Ячейка As Range) As Variant
With Ячейка
If .Count > 1 Then
ЭТО_ФОРМУЛА = CVErr(xlErrRef)
'.Cells(1, 1).HasFormula
Else
ЭТО_ФОРМУЛА = .HasFormula
End If
End With
End Function
имхо (подчёркиваю!) интересным с практической точки зрения был бы вариант, когда ЕФОРМУЛА для диапазона возвращает ИСТИНА только в том случае, когда каждая ячейка этого диапазона содержит формулу. возможная модификация (возможно, даже определяемая вторым параметром функции) - считать ли "не формулами" абсолютно пустые ячейки.
реализуется всё это довольно легко. я писать не буду. но - может быть, кто-нибудь вышел бы на эту тему через поиск и использовал.
фрилансер Excel, VBA - контакты в профиле "Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
ikki, согласен, это вполне интересный вариант. Тогда так
Код
Function ЭТО_ФОРМУЛА(Ячейка As Range, Optional СчитатьПустые As Boolean) As Boolean
Dim AllOk As Boolean
If Ячейка.Count = 1 Then
AllOk = Ячейка.HasFormula
Else
AllOk = True
For Each C In Ячейка
If Not C.HasFormula Then
If Not ((C.Value = "") And СчитатьПустые) Then
AllOk = False
Exit For
End If
End If
Next C
End If
ЭТО_ФОРМУЛА = AllOk
End Function
Если СчитатьПустые = Истина, то пустая ячейка считается, как с формулой