Excel как определить есть ли формула в ячейке

Хитрости »

1 Май 2011              81480 просмотров


Как узнать есть ли формула в ячейке?

Начиная с версий Excel 2013 среди стандартных функция появилась функция ЕФОРМУЛА(ISFORMULA), которая позволяет определить наличие формулы в ячейке. Единственный аргумент функции — ссылка на ячейку: =ЕФОРМУЛА(A1).
Функция возвращает ИСТИНА(TRUE), если в ячейке есть формула и ЛОЖЬ(FALSE) если в ячейке константа.
Статья была написана ранее и описанные в ней способы применимы к любой версии Excel

В более ранних версиях определить наличие формулы в ячейке можно двумя способами.

Способ первый
Создание именованной формулы(без применения VBA — Visual Basic for Application)

  • Выделяете ячейку B1
  • жметe Ctrl+F3(вызов диспетчера имен) Если по каким-то причинам Ctrl+F3 не работает, то Диспетчер имен можно вызвать через меню:
    Excel 2003:Вставка-Имя-Присвоить.
    Excel 2007-2010:вкладка Формулы-Диспетчер имен.
  • в поле имя пишем — HasFormula(или любое понравившееся название, но не противоречащее правилам создания имен в Excel. Подробнее можно прочитать в статье: Именованные диапазоны)
  • в поле Диапазон пишем формулу: =ПОЛУЧИТЬ.ЯЧЕЙКУ(48;Лист1!A1)

    если изменить первый параметр на 6 =ПОЛУЧИТЬ.ЯЧЕЙКУ(6;Лист1!A1), то результатом будет текст формулы из ячейки, которая указана в функции ПОЛУЧИТЬ.ЯЧЕЙКУ

Теперь, записав в ячейку В1: =HasFormula Вы узнаете, есть ли в ячейке А1 формула или же там константа.

Так же при помощи функций листа макросов можно получить и сам текст формулы(если в ячейке записана формула СЕГОДНЯ(), то ПОЛУЧИТЬ.ЯЧЕЙКУ вернет именно текст СЕГОДНЯ()). Для этого достаточно поменять формулу в поле Диапазон на такую:
=ПОЛУЧИТЬ.ФОРМУЛУ(Лист1!A1)

Недостатки данного метода — Вы привязаны к «левостороннему» определению формулы. Т.е. таким методом Вы можете узнать есть ли формула(или какая формула) в ячейке, расположенной слева от ячейки с именованной формулой. Для того, чтобы «узнать формулу справа» именованная формула должна выглядеть так: =ПОЛУЧИТЬ.ЯЧЕЙКУ(48;Лист1!C1);для работы формулы обязательно должны быть разрешены макросы. Чтобы не зависеть от левостороннего или правостороннего определения можно закрепить столбцы(выделяете ссылку на ячейку — А1 и нажимаете F4. Ссылка будет меняться, появятся знаки доллара $. Если знак стоит перед именем столбца — $А1 — то смещение по столбцу происходить не будет. Так же со строками)
Для ПОЛУЧИТЬ.ФОРМУЛУ есть еще недостаток: формула будет отображаться в стиле ссылок R1C1, что не совсем удобно.
.

Для работы такой функции должны быть разрешены макросы.


Способ второй
Еще один метод определения(на мой взгляд более удобный в использовании) — создание пользовательской функции:

Function IsFormula(ByVal Cell As Range, Optional ShowFormula As Boolean = False)
    'Application.Volatile True
    If ShowFormula Then
        If Cell.HasFormula Then
            IsFormula = "Формула: " & IIf(Cell.HasArray, "{" & Cell.FormulaLocal & "}", Cell.FormulaLocal)
        Else
            IsFormula = "Значение: " & Cell.Value
        End If
    Else
        IsFormula = Cell.HasFormula
    End If
End Function

Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA(Alt+F11) -создать стандартный модуль(InsertModule) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций(Shift+F3), отыскав её в категории Определенные пользователем (User Defined Functions).

Теперь в ячейку записываем созданную формулу
=IsFormula(A2)
Данная функция имеет два аргумента:

  • Cell — ссылка на проверяемую ячейку
  • ShowFormula — необязательный аргумент. Если присвоено значение ЛОЖЬ или 0 или опущен(не указан) — то функция вернет значение ИСТИНА или ЛОЖЬ(в зависимости от наличия или отсутствия формулы в ячейке). Если присвоено значение ИСТИНА или 1, то в функция вернет не просто ИСТИНА или ЛОЖЬ, а еще и текст самой формулы.

Формулу можно так же найти в диспетчере функций в категории Определенные пользователемIsFormula и записывать её в ячейку через мастер функций.
Чтобы при изменении формулы в целевой ячейке сразу же изменялось её отображение в ячейке с данной функцией необходимо убрать апостроф(‘) перед Application.Volatile True (в файле-примере это уже сделано).

Недостатки данного метода — для работы функции обязательно должны быть разрешены макросы

Созданные функции можно так же использовать в условном форматировании для подсветки ячеек, содержащих формулы.

Скачать пример

  Tips_All_HasFormula.xls (31,0 KiB, 4 353 скачиваний)


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше

Предположим, вам нужно быстро изменить некоторые формулы, но вы еще не работали с книгой и не знаете, где находятся формулы. Вот как их найти.

  1. Вы можете выбрать ячейку или диапазон ячеек.

    Если выбрать одну ячейку, поиск будет происходить на всем. При выборе диапазона поиск будет только в этом диапазоне.

  2. Щелкните Главная > найти & Выберите >Перейти к специальным.

  3. Щелкните Формулыи при необходимости счистите любой из флажков под кнопкой Формулы.

Параметры поиска формул в окне «Выделение группы ячеек»

4. Нажмите кнопку ОК.

Подробнее о поиске в Excel

  • Поиск или замена текста и чисел на листе

  • Поиск объединенных ячеек

  • Поиск диапазонов с использованием определенных имен

  • Удаление или разрешение циклической ссылки

  • Поиск скрытых ячеек на листе

Нужна дополнительная помощь?

Отображение текста формул

Добрый день, читатели блога! Сегодня мы поговорим о том как при необходимости отобразить формулу в ячейке как текст. Ситуация нестандартная, но иногда может пригодиться, особенно для проверки вводимых функций.

Для пользователя Excel всегда встаёт вопрос: как же узнать где в ячейке есть формула, а где нет? 

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

Способ №1

Определить есть ли формула в ячейке нам поможет функция =ЕФОРМУЛА.

Отображение текста формул

Результатом вычислений будет два значения: ИСТИНА — формула в ячейке есть; ЛОЖЬ — формулы в ячейке нет.

Ячейки с формулами найдены. Преобразовать формулу в текст поможет функция =Ф.ТЕКСТ. Она возвращает формулу в виде строки. Есть и минус: её можно использовать только с версии Excel 2013 и выше.

отображение текста формул

Способ №2

Воспользуемся гибкими возможностями именованных диапазонов в Excel. Переходим на вкладку «Формулы», в блоке кнопок «Определенные имена» нажимаем «Диспетчер имён».

Щёлкаем «Создать», далее вводим имя диапазона (например, ПОЛУЧИТЬФОРМУЛУ), область оставим «Книга», поле «Примечание» можно оставить пустым, в поле «Формула» напишем =ПОЛУЧИТЬ.ЯЧЕЙКУ(6;Лист2!C1). В примере формула находится в ячейке С1, у вас она может быть где угодно, но важно помнить одно — такой способ работает только в ячейке правее ячейки с формулой!

отображение текста формул

Имя создано, осталось ввести его в ячейку. Вводим равно и пишем начальные буквы имени, созданного выше.

отображение текста формул

Как только оно появилось сразу щелкаем по нему два раза.

отображение текста формул

Подтверждаем ввод. Видим результат.

отображение текста формул

Способ №3

Воспользуемся созданием пользовательской функции на VBA.

Добавим новый модуль (как это сделать можно прочитать ЗДЕСЬ):

  1. Вкладка «Разработчик», блок кнопок «Код», кнопка «Visual Basic»;
  2. Далее «Insert» — > «Module».

Вставляем код:

Function FFormula(ByVal Cell As Range, Optional ShowFormula As Boolean = False)
‘Application.Volatile True
If ShowFormula Then
If Cell.HasFormula Then
FFormula = «Текст формулы: » & IIf(Cell.HasArray, «{» & Cell.FormulaLocal & «}», Cell.FormulaLocal)
Else
FFormula = «Значение ячейки: » & Cell.Value
End If
Else
FFormula = Cell.HasFormula
End If
End Function

Разбор функции будет в видео ниже. Теперь нам остаётся ввести созданную функцию. Обязательно ввести через точку с запятой «Истина», чтобы активировать возможность показа формулы переменной «ShowFormula«.

отображение текста формул

Подтверждаем ввод, смотрим на результат.

отображение текста формул

Если вы знаете ещё варианты решения этой задачи — оставляйте комментарии под статьёй!

Видео:

 
 

mazayZR

Пользователь

Сообщений: 950
Регистрация: 01.01.1970

:-)  
тот ли это слэн? или поддельный…

 

формулой или макросом есс-но, не взглядом :)

 

If Left(ActiveCell.Formula, 1) = «=» Then MsgBox 1

 
 

я почему-то подумал:  

  if .formula<>.text then    

  понятно, что и то и то медленно, а что лучше?  

  а как скомпилировать проект?

 

{quote}{login=слэн}{date=16.04.2008 02:40}{thema=}{post}я почему-то подумал:  

  if .formula<>.text then    

  понятно, что и то и то медленно, а что лучше?  

  а как скомпилировать проект?{/post}{/quote}  

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

 

Application.VBE.VBProjects(1).MakeCompiledFile  

  как использовать

 

А правка — перейти — выделить — формулы?  
Или то же на ВБА  
Selection.SpecialCells(xlCellTypeFormulas, 23).Select  
все ячейки с формулами выделены, дальше что хотим, то и делаем с ними

 

вообще хотелось формулу..  
сделал пользовательскую функцию, но замедляет — страшно  

  ну да, тоже один из способов, если использовать  
intersect(range1,specialceels(xlCellTypeFormulas, 23)),  
но подозреваю, что не лучший..

 

mazayZR

Пользователь

Сообщений: 950
Регистрация: 01.01.1970

гугл вот что показывает  

http://msoffice.nm.ru/faq/macros/formulas.htm#faq140  

  If Range(«A1»).HasFormula = True Then    
  MsgBox «Ячейка содержит формулу»    
Else    
  MsgBox «Ячейка не содержит формулы»    
End If

 
 

{quote}{login=слэн}{date=16.04.2008 02:48}{thema=}{post}Application.VBE.VBProjects(1).MakeCompiledFile  

  как использовать{/post}{/quote}  

  Похоже это метод VB и в VBA он не работает, примеров не нашел , кроме вот этой ссылки, но там по англицки  

http://www.tutorials-win.com/WordVBA/Error-trying-70803/  

попроьывал приведенный код, VBA ругается

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

{quote}{login=слэн}{date=16.04.2008 02:56}{thema=}{post}вообще хотелось формулу..  
сделал пользовательскую функцию, но замедляет — страшно  

  ну да, тоже один из способов, если использовать  
intersect(range1,specialceels(xlCellTypeFormulas, 23)),  
но подозреваю, что не лучший..{/post}{/quote}  
—  
Слэн, можно и формулой, но не универсально.  
Зависит от применения, которое хотелось бы уточнить.  
Например, в формуле [A2] нужно проверить, есть ли формула в [B2], и так до [A100]- это один случай, не универсальный с т.з. фиксации ссылки: строка — та же, 1 колонка справа. Другой случай (универсальный), когда в формуле условного форматирования нужно проверить, есть ли формула в ячейке, которая условно форматируется.
—  
ZVI

 
 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

{quote}{login=слэн}{date=16.04.2008 08:57}{thema=}{post}первый случай..{/post}{/quote}  
—  
Прилагается вполне универсальный вариант функции HasFormula(Refernce).  
—  
ZVI

 

CTRL+’    
и все формулы налицо

 

{quote}{login=gremlin}{date=17.04.2008 12:00}{thema=}{post}CTRL+’    
и все формулы налицо{/post}{/quote}1. Внимательно перечитываем треий пост этой темы:  
формулой или макросом есс-но, не взглядом :)  
2. При необходимости п. 1 повторить

 

{quote}{login=ZVI}{date=16.04.2008 10:20}{thema=Re: как определить есть ли в ячейке формула или нет}{post}{quote}{login=слэн}{date=16.04.2008 08:57}{thema=}{post}первый случай..{/post}{/quote}  
—  
Прилагается вполне универсальный вариант функции HasFormula(Refernce).  
—  
ZVI{/post}{/quote}  

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

 

юзаем гуглю и мелкософт.ком и находим справку по этим функциям

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

{quote}{login=Артем}{date=17.04.2008 02:06}{thema=Re: Re: как определить есть ли в ячейке формула или нет}{post}{quote}{login=ZVI}{date=16.04.2008 10:20}{thema=Re: как определить есть ли в ячейке формула или нет}{post}{quote}{login=слэн}{date=16.04.2008 08:57}{thema=}{post}первый случай..{/post}{/quote}  
—  
Прилагается вполне универсальный вариант функции HasFormula(Refernce).  
—  
ZVI{/post}{/quote}  

  а можно поподробнее описать процесс, как это получилось,а то ни в справке, ни в гугле подробного описания использованных функций не нашел{/post}{/quote}  
—  
Использован Excel-макро-язык XLM, на котором программировали еше наши бабушки до того, как появился VBA.  
Функции, написанные таким образом, в рабочем пространстве книг и листов работают на порядок быстрее VBA-ных аналогов, так как не используется промежуточный и достаточно медленый OLE-транслятор между рабочим простанством таблиц и рабочим пространством VBA.    
Справку по функциям этого языка можно скачать отсюда:

http://download.microsoft.com/download/excel2000/xlmacro/2000/WIN98/EN-US/xlmacro.exe  

Но не без заморочек: нужно переименовать EXE в ZIP и архиватором извлечь CHM, т.к. самораспаковывается только, если установлен Excel 2000.  
Описаний правил програмирования на Excel-XLM я не видел, но о них несложно догадаться, если взглянуть на какие-нибудь примеры.  

  Вопрос Слэна, на самом деле, очень интересный и тонкий, несмотря на напрашивающееся «тыкнуть и позырить» :)  

  —  
ZVI

 

я тут поэксперементировал и..  

  c exel4 макросами — 8сек  
left(.formula)=»=» — 17сек  
.formula<>.text — 27сек  

  такой большой разницы между вторым и третьим не ожидал  

  спасибо zvi обращу внимание на листы макросов, особенно мне понравилось, что его невозможно отключить.. :) ?

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

—  
Просто для истории:    
Оказалось, что Exel4-макро-формула, записанная в имени книги, работает примерно в 20 раз быстрее аналогичной фомулы листа макросов.  
В приложении приведен вариант проверки формулы в колонке справа. Использована формула в имени [ФормулаСправа]
—  
ZVI

 

{quote}{login=ZVI}{date=30.04.2008 09:48}{thema=Re: как определить есть ли в ячейке формула или нет}{post}—  
Просто для истории:    
Оказалось, что Exel4-макро-формула, записанная в имени книги, работает примерно в 20 раз быстрее аналогичной фомулы листа макросов.  
В приложении приведен вариант проверки формулы в колонке справа. Использована формула в имени [ФормулаСправа]
—  
ZVI{/post}{/quote}  

  ZVI вы ипользовали англоязычный эксель?  
А то у меня local rus ругается….  

  И как получилось задать ссылку на ячейку справа?  
Неужто напрямую R[0]C[1]?

 

зачем RэCэ..  просто мышкой тыкнуть, но деньги убрать..  
:)  

  интересно! спасибо, ZVI!

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

—  
Ответ для DL.  

  ФормулаСправа из post_16496.rar  работает в русскоязычной версии, проверял в Excel 2002, 2003, 2007.  
Русскоязычная формула: =ПОЛУЧИТЬ.ЯЧЕЙКУ(48;Лист1!B2)  
Англоязычная формула:  =GET.CELL(48,Лист1!B2)  

  Используется функция, определенная именем: Named Defined Function (NDF) – придумалось такое вот название, по аналогии с VBA-ной User Defined Function (UDF).  

  Принцип простой, его удобнее объяснить на простейшем примере:  
Допустим, для каждой ячейки диапазона C1:C10 нужна NDF, которая бы вычисляла сумму двух ячеек справа. Если пользоваться Excele-ем, то нужно было бы просто в C1 написать формулу:  =D1+E1 и протянуть формулу до C10.  

  Чтобы сделать то же самое с помощью NDF, нужно:  
1. Активизировать C1  
2. Через меню Вставить — Имя — Присвоить ввести имя NDF, например: CуммаСправа  
3. В поле формула, ввести формулу, как рекомендовал Слэн: ткнуть мышкой в D1, добавить плюс и ткнуть в E1, затем аккуратно поудалять знак абсолютной ссылки $. Формула станет относительной и будет выглядеть так: =Лист1!D1+Лист1!E1  
4. Теперь если где-либо на листе1 ввести формулу (удобнее через F3) =СуммаСправа  
то в этой ячейке появится сумма двух ячеек справа.  

  Когда нужна NDF:  
1. NDF позволяют использовать формулы макроязыка Excel 4.0 XML, которые не работают в обычных формулах ячеек. Примером может служить ФормулаСправа  
2. NDF экономит память и улучшает читаемость формул.    
Пример здесь:

http://www.planetaexcel.ru/forum.php?thread_id=3377  

post_14945.rar  

  —  
ZVI

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

—  
Добавлю, что формула NDF привязана к конкретному листу, для другого листа можно создать другое имя с аналогичной формулой. Возможно, что проблема DL именно в этом.  
—  
ZVI

 

DL

Гость

#28

06.05.2008 07:02:48

ZVI ОГРОМНОЕ ОЧЕРЕДНОЕ СПАСИБО!  

  Просто узнавая такие вещи руки чешутся на эксперементирование и философствованье.  

  Одна беда что что наэксперементировано и нафилосовтвовано и до нас не мало….

Содержание

  1. Как определить, есть ли в ячейке Excel формула или она жестко закодирована?
  2. 9 ответов 9
  3. ЯЧЕЙКА (функция ЯЧЕЙКА)
  4. Синтаксис
  5. info_type значения
  6. Коды форматов функции ЯЧЕЙКА
  7. Как определить является ли содержимое ячейки формулой в microsoft excel
  8. Проверьте, содержат ли ячейки формулы с функцией
  9. Найдите и выделите все ячейки с формулами с помощью команды Перейти к специальной
  10. Выделите все ячейки с формулами с кодом VBA
  11. Автоматически выделять все формулы во всей книге с помощью Kutools for Excel
  12. Функция ЕСЛИ в MS Excel с одним условием.
  13. Функцией ЕСЛИ в Excel, первый пример.
  14. Функция ЕСЛИ в Excel, второй пример.
  15. Функция ЕСЛИ в MS Excel с несколькими условиями.
  16. Использование операторов «И» и «ИЛИ» в функции ЕСЛИ в MS Excel.

Как определить, есть ли в ячейке Excel формула или она жестко закодирована?

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

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

9 ответов 9

Выберите нужные ячейки, нажмите Ctrl + G, а затем выберите Special чтобы открыть следующее диалоговое окно:

Затем укажите требуемый тип ячеек и нажмите « OK и останутся выбранными только те типы ячеек.

Начиная с Excel 2013, вы можете делать:

Используйте условное форматирование. Выберите опцию «Использовать формулу, чтобы определить, какие ячейки форматировать» и введите «= NOT(Cellhasformula)». Это отформатирует все, что жестко закодировано.

или показать только формулы:

Два других метода

  1. Используйте картографический инструмент, такой как мой Mappit!надстройка (которая может быть запущена как доверенная надстройка)
  2. Вы можете использовать очень полезный обходной путь XLM / Range Names, который предлагает в реальном времени раскрашивать жестко запрограммированные ячейки, формулы, связанные ячейки и т.д. Для развертывания в отличие от VBA не требуются знания программирования.

Прошло далеко от первоначальной даты, но, если она кому-то пригодится, мне удалось обойти это, выделив диапазон ячеек, затем с помощью Replace (Ctrl+H), установив для него значение «Искать в» «Формулы» и заменить на равно = с апострофом-равно ‘=

Это вывело все формулы, но, очевидно, также преобразовало бы такие вещи, как если бы $ C $ 1 содержал =if($A1=$B1,»Match»,»Different») в ‘=if($A1’=$B1,»Match»,»Different»)

Обратите внимание на A1’=B1 в середине формулы, которая может быть проблематичной, но все равно означает, что вы можете видеть формулы, хотя и непрагматично. Можно использовать функцию SUBSTITUTE, чтобы вернуть ее обратно, поэтому $ D $ 1 содержит =SUBSTITUTE(C1,»‘=»,»=») , затем просто скопируйте ее в Блокнот и вставьте обратно в $ E $ 1.

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

Источник

ЯЧЕЙКА (функция ЯЧЕЙКА)

ЯЧЕЙКА Функция возвращает сведения о форматировании, расположении или содержимом ячейки. Например, если перед выполнением вычислений с ячейкой необходимо удостовериться в том, что она содержит числовое значение, а не текст, можно использовать следующую формулу:

Эта формула вычисляет произведение A1*2, только если в ячейке A1 содержится числовое значение, и возвращает значение 0, если в ячейке A1 содержится текст или она пустая.

Примечание: Формулы, использующие функцию ЯЧЕЙКА, имеют значения аргументов для конкретного языка и возвращают ошибки при вычислениях с использованием другой языковой версии Excel. Например, если при создании формулы, содержащей ячейку, при использовании чешской версии Excel эта формула возвращает ошибку, если книга открыта во французском языке. Если важно, чтобы другие люди открывали вашу книгу с помощью разных языковых версий Excel, рассмотрите возможность использования альтернативных функций или разрешение на сохранение локальных копий, в которых они меняют аргументы ЯЧЕЙКА в зависимости от языка.

Синтаксис

Аргументы функции ЯЧЕЙКА описаны ниже.

Текстовое значение, задающее тип сведений о ячейке при возвращении. В приведенном ниже списке указаны возможные значения аргумента «тип_сведений» и соответствующие результаты.

Ячейка, сведения о которой требуется получить.

Если этот аргумент опущен, сведения, указанные в аргументе info_type, возвращаются для ячейки, выбранной на момент вычисления. Если аргумент «ссылка» является диапазоном ячеек, функция ЯЧЕЙКА возвращает сведения об активной ячейке в выбранном диапазоне.

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

В режиме автоматического вычисления при внесении пользователем изменений в ячейку вычисление может запускаться до или после выполнения выделения в зависимости от платформы, используемой для Excel. Например, Excel для Windows активирует вычисление перед изменением выделения,Excel в Интернете запускает его после этого.

Когда Co-Authoring с другим пользователем, который вносит изменения, эта функция сообщает о вашей активной ячейке, а не редакторе.

Любой пересчет, например нажатие F9, приведет к тому, что функция возвращает новый результат, даже если изменение ячейки не было изменено.

info_type значения

В следующем списке описаны текстовые значения, которые можно использовать info_type аргумента. Эти значения должны быть введены в функцию ЯЧЕЙКА с кавычками (» «).

Ссылка на первую ячейку в аргументе «ссылка» в виде текстовой строки.

Номер столбца ячейки в аргументе «ссылка».

1, если форматированием ячейки предусмотрено изменение цвета для отрицательных значений; во всех остальных случаях — 0 (ноль).

Примечание: Это значение не поддерживается в Excel в Интернете, Excel Mobile и Excel Starter.

Значение левой верхней ячейки в ссылке; не формула.

Имя файла (включая полный путь), содержащего ссылку, в виде текстовой строки. Если лист, содержащий ссылку, еще не был сохранен, возвращается пустая строка («»).

Примечание: Это значение не поддерживается в Excel в Интернете, Excel Mobile и Excel Starter.

Текстовое значение, соответствующее числовому формату ячейки. Значения для различных форматов показаны ниже в таблице. Если ячейка изменяет цвет при выводе отрицательных значений, в конце текстового значения добавляется «-«. Если положительные или все числа отображаются в круглых скобках, в конце текстового значения добавляется «()».

Примечание: Это значение не поддерживается в Excel в Интернете, Excel Mobile и Excel Starter.

1, если форматированием ячейки предусмотрено отображение положительных или всех чисел в круглых скобках; во всех остальных случаях — 0.

Примечание: Это значение не поддерживается в Excel в Интернете, Excel Mobile и Excel Starter.

Текстовое значение, соответствующее префиксу метки ячейки. Одиночная кавычка (‘) соответствует тексту, выровненному влево, двойная кавычка («) — тексту, выровненному вправо, знак крышки (^) — тексту, выровненному по центру, обратная косая черта () — тексту, распределенному по всей ширине ячейки, а пустой текст («») — любому другому содержимому ячейки.

Примечание: Это значение не поддерживается в Excel в Интернете, Excel Mobile и Excel Starter.

0, если ячейка разблокирована, и 1, если ячейка заблокирована.

Примечание: Это значение не поддерживается в Excel в Интернете, Excel Mobile и Excel Starter.

Номер строки ячейки в аргументе «ссылка».

Текстовое значение, соответствующее типу данных в ячейке. Значение «b» соответствует пустой ячейке, «l» — текстовой константе в ячейке, «v» — любому другому содержимому.

Возвращает массив с 2 элементами.

Первый элемент массива — это ширина столбца ячейки, округленная до целого. Единица измерения равна ширине одного знака для шрифта стандартного размера.

Второй элемент массива имеет значение Boolean, значение true, если ширина столбца является значением по умолчанию, или FALSE, если ширина явно задана пользователем.

Примечание: Это значение не поддерживается в Excel в Интернете, Excel Mobile и Excel Starter.

Коды форматов функции ЯЧЕЙКА

В приведенном ниже списке описаны текстовые значения, возвращаемые функцией ЯЧЕЙКА, если в качестве аргумента «тип_сведений» указано значение «формат», а аргумент ссылки указывает на ячейку, отформатированную с использованием встроенного числового формата.

Формат Microsoft Excel

Значение, возвращаемое функцией ЯЧЕЙКА

Источник

Как определить является ли содержимое ячейки формулой в microsoft excel

Представим, что в части ячеек листа имеются формулы, а в других – значения. Нужно определить, что в каких находится.

Выделить ячейки, которые содержат формулы можно воспользовавшись стандартным инструментом EXCEL Выделение группы ячеек… или через меню: на вкладке Главная в группе Редактирование щелкните стрелку рядом с командой Найти и выделить , а затем выберите в списке пункт Формулы .

Выделить ячейки, которые содержат НЕ формулы, т.е. содержат константы можно аналогичным образом, только вместо Формулы нужно выбрать Константы .

Если в ячейке введено =11 , то это выражение считается формулой, хотя оно и не может быть изменено. Если у ячейки установлен текстовый формат, то введенная в нее формула будет интерпретирована как текст, т.е. константа.

Вышеуказанный подход требует вмешательства пользователя, т.е. необходимо вручную выбирать пункты меню. Можно настроить Условное форматирование так, чтобы после ввода формулы происходило автоматическое выделение, содержащей ее ячейки.

Допустим значения вводятся в диапазон A1:A10 (см. файл примера ) . Для настройки Условного форматирования для этого диапазона необходимо сначала создать Именованную формулу , для этого:

  • выделите ячейку A1 ;
  • вызовите окно Создание имени из меню Формулы/ Определенные имена/ Присвоить имя ;
  • в поле Имя введите название формулы, например Формула_в_ячейке ;
  • в поле Диапазон введите =ПОЛУЧИТЬ.ЯЧЕЙКУ(48;Лист1!A1)
  • нажмите ОК.

Теперь настроим правило Условного форматирования , для этого:

  • выделите диапазон A1:A10 ;
  • вызовите инструмент Условное форматирование ( Главная/ Стили/ Условное форматирование/ Создать правило );
  • выберите Использовать формулу для определения форматируемых ячеек;
  • в поле « Форматировать значения, для которых следующая формула является истинной » введите =Формула_в_ячейке ;
  • выберите требуемый формат, например, красный цвет фона;

Теперь все ячейки из диапазона A 1: A 10 , содержащие формулы, выделены красным.

В этом примере мы использовали макрофункцию ПОЛУЧИТЬ.ЯЧЕЙКУ() . Это набор функций к EXCEL 4-й версии, которые нельзя напрямую использовать на листе EXCEL 2007, а можно использовать только в качестве Именованной формулы , что мы и сделали.

Чтобы, наоборот, выделить все непустые ячейки, содержащие константы (или НЕ содержащие формулы), нужно изменить формулу на =И(НЕ(ПОЛУЧИТЬ.ЯЧЕЙКУ(48;Лист1!A1));НЕ(ЕПУСТО(Лист1!A1)))

Совет : Чтобы показать все формулы, которые имеются на листе нужно на вкладке Формулы в группе Зависимости формул щелкните кнопку Показать формулы .

Чтобы выделить все ячейки, содержащие формулы, нужно на вкладке Главная , в группе Редактирование выбрать команду Формулы .

Чтобы найти все ячейки на листе, имеющие Условное форматирование необходимо:

Начиная с версий Excel 2013 среди стандартных функция появилась функция ЕФОРМУЛА (ISFORMULA) , которая позволяет определить наличие формулы в ячейке. Единственный аргумент функции — ссылка на ячейку: =ЕФОРМУЛА( A1 ) .
Функция возвращает ИСТИНА (TRUE) , если в ячейке есть формула и ЛОЖЬ (FALSE) если в ячейке константа.
Статья была написана ранее и описанные в ней способы применимы к любой версии Excel

В более ранних версиях определить наличие формулы в ячейке можно двумя способами.

Способ первый
Создание именованной формулы(без применения VBA — Visual Basic for Application)

  • Выделяете ячейку B1
  • жметe Ctrl+F3(вызов диспетчера имен) Если по каким-то причинам Ctrl+F3 не работает, то Диспетчер имен можно вызвать через меню:
    Excel 2003 :Вставка-Имя-Присвоить.
    Excel 2007-2010 :вкладка Формулы-Диспетчер имен.
  • в поле имя пишем — HasFormula(или любое понравившееся название, но не противоречащее правилам создания имен в Excel. Подробнее можно прочитать в статье: Именованные диапазоны)
  • в поле Диапазон пишем формулу: =ПОЛУЧИТЬ.ЯЧЕЙКУ(48;Лист1!A1)

если изменить первый параметр на 6 =ПОЛУЧИТЬ.ЯЧЕЙКУ( 6 ;Лист1!A1) , то результатом будет текст формулы из ячейки, которая указана в функции ПОЛУЧИТЬ.ЯЧЕЙКУ

Теперь, записав в ячейку В1 : =HasFormula Вы узнаете, есть ли в ячейке А1 формула или же там константа.

Так же при помощи функций листа макросов можно получить и сам текст формулы(если в ячейке записана формула СЕГОДНЯ() , то ПОЛУЧИТЬ.ЯЧЕЙКУ вернет именно текст СЕГОДНЯ()). Для этого достаточно поменять формулу в поле Диапазон на такую:
=ПОЛУЧИТЬ.ФОРМУЛУ(Лист1!A1)

Недостатки данного метода — Вы привязаны к «левостороннему» определению формулы. Т.е. таким методом Вы можете узнать есть ли формула(или какая формула) в ячейке, расположенной слева от ячейки с именованной формулой. Для того, чтобы «узнать формулу справа» именованная формула должна выглядеть так: =ПОЛУЧИТЬ.ЯЧЕЙКУ(48;Лист1!C1) ;для работы формулы обязательно должны быть разрешены макросы. Чтобы не зависеть от левостороннего или правостороннего определения можно закрепить столбцы(выделяете ссылку на ячейку — А1 и нажимаете F4. Ссылка будет меняться, появятся знаки доллара $. Если знак стоит перед именем столбца — $А1 — то смещение по столбцу происходить не будет. Так же со строками)
Для ПОЛУЧИТЬ.ФОРМУЛУ есть еще недостаток: формула будет отображаться в стиле ссылок R1C1, что не совсем удобно.
.

Для работы такой функции должны быть разрешены макросы.

Способ второй
Еще один метод определения(на мой взгляд более удобный в использовании) — создание пользовательской функции:

Function IsFormula(ByVal Cell As Range, Optional ShowFormula As Boolean = False) ‘Application.Volatile True If ShowFormula Then If Cell.HasFormula Then IsFormula = «Формула: » & IIf(Cell.HasArray, «», Cell.FormulaLocal) Else IsFormula = «Значение: » & Cell.Value End If Else IsFormula = Cell.HasFormula End If End Function

Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA( Alt + F11 ) -создать стандартный модуль(Insert -Module) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций( Shift + F3 ), отыскав её в категории Определенные пользователем (User Defined Functions) .

Теперь в ячейку записываем созданную формулу
=IsFormula( A2 )
Данная функция имеет два аргумента:

  • Cell — ссылка на проверяемую ячейку
  • ShowFormula — необязательный аргумент. Если присвоено значение ЛОЖЬ или 0 или опущен(не указан) — то функция вернет значение ИСТИНА или ЛОЖЬ(в зависимости от наличия или отсутствия формулы в ячейке). Если присвоено значение ИСТИНА или 1, то в функция вернет не просто ИСТИНА или ЛОЖЬ, а еще и текст самой формулы.

Формулу можно так же найти в диспетчере функций в категории Определенные пользователем — IsFormula и записывать её в ячейку через мастер функций.
Чтобы при изменении формулы в целевой ячейке сразу же изменялось её отображение в ячейке с данной функцией необходимо убрать апостроф(‘) перед Application.Volatile True (в файле-примере это уже сделано).

Недостатки данного метода — для работы функции обязательно должны быть разрешены макросы

Созданные функции можно так же использовать в условном форматировании для подсветки ячеек, содержащих формулы.

Если у вас есть большой рабочий лист, содержащий несколько формул, и теперь вы хотите найти или проверить, содержат ли формулы формулы. Есть ли у вас какие-нибудь хорошие способы сразу найти или проверить ячейки с формулами в Excel?

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

По умолчанию есть простая функция, позволяющая проверить, содержит ли ячейка формулу в Excel, сделайте следующее:

1. Введите эту формулу: = ISFORMULA (A1) (A1 это ячейка, которую вы хотите проверить, является ли это формулой) в пустую ячейку, чтобы проверить, содержит ли конкретная ячейка формулу или нет, затем нажмите Enter ключ к результату, НЕПРАВДА указывает, что это не формула, ИСТИНА обозначает формулу. Смотрите скриншот:

2. Затем вы можете перетащить дескриптор заполнения в диапазон ячеек, в которых вы хотите проверить соответствующие ячейки, если это формулы, см. Снимок экрана:

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

Если вы хотите найти и выделить ячейки формулы, вы также можете применить Перейти к специальному команда для решения этой задачи.

1. Выберите диапазон, в котором вы хотите выделить ячейки формулы.

2. Нажмите Главная > Найти и выбрать > Перейти к специальному, см. снимок экрана:

3. В Перейти к специальному диалоговое окно, выберите Формулы и проверьте все параметры под Формулы, см. снимок экрана:

4. Затем нажмите OK, выделены сразу все ячейки с формулами. Смотрите скриншот:

Выделите все ячейки с формулами с кодом VBA

Следующий код VBA может помочь вам выделить все ячейки формулы, чтобы выделить их.

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модульи вставьте следующий код в Модуль Окно.

Код VBA: выделить все ячейки формулами

3, Затем нажмите F5 ключ для запуска этого кода, а затем выберите диапазон данных, в котором вы хотите найти формулы из окна подсказки, см. снимок экрана:

4. Нажмите OK кнопку, и все ячейки формулы были выделены желтым цветом, как показано на следующем снимке экрана:

Внимание: В приведенном выше коде xRg.Interior.Color = vbYellow , вы можете изменить цвет выделения — желтый на свой вкус, например красный, зеленый, синий и т. д.

Автоматически выделять все формулы во всей книге с помощью Kutools for Excel

Kutools for ExcelАвтора Выделить формулы Эта функция может помочь вам автоматически выделить формулы во всей книге, а выделенные ячейки будут изменяться по мере динамического изменения ячейки.

После установки Kutools for Excel, пожалуйста, сделайте следующее 🙁 Бесплатная загрузка Kutools для Excel сейчас )

1. Нажмите Kutools Plus > Дизайн рабочего листа, И новый Дизайн вкладка будет отображаться на ленте, щелкните Выделить формулы под Дизайн вкладку см. скриншоты:

2. И тогда все ячейки формулы на всех листах были выделены сразу.

В данной статье рассмотрим функцию MS Excel, которая называется ЕСЛИ. Данная функция позволяет проверить, соответствует ли содержащиеся в указанной ячейки данные заданному критерию или нет. В зависимости от результата проверки функция выводит заданное значение. Чтобы понять суть и возможности функции ЕСЛИ, рассмотрим примеры с ее использованием.

Функция ЕСЛИ в MS Excel с одним условием.

Функцией ЕСЛИ в Excel, первый пример.

Рассмотрим простой пример применения функции ЕСЛИ в MS Excel. У нас есть столбец №1, в котором содержаться числа от 1 до 10.

Необходимо проверить, соответствует ли числа находящиеся в столбце №1 нашему критерию. Критерий: является ли числа находящиеся в столбце №1 числами, значения которых больше числа 4.

Взываем функцию ЕСЛИ в ячейку С3.

В диалоговом окне Аргументы функции видим три поля для заполнения:

Нажимаем ОК в диалоговом окне Аргументы функции.

Как видим, число содержащиеся в ячейки В3 не является числом, которое больше числа 4. Функция ЕСЛИ вернула значение_если_ложь (неправда). Протянем функцию ЕСЛИ вниз по столбцу, чтобы проверить значения находящиеся в остальных ячейках столбца №1, на соответствие нашему критерию (логическое_выражение).

Как видно из результата, ячейки в диапазоне В7:В12 содержат в себе числа, которые больше числа 4. Функция ЕСЛИ вернула значение_если_истина (правда).

Функция ЕСЛИ в Excel, второй пример.

Рассмотрим еще один пример. Предположим, что у нас есть таблица. В ней фамилии студентов, которые сдавали зачет. Часть студентов сдали зачет, а часть не сдали.

Теперь добавим в нашу таблицу столбец: Допуск к экзамену. Используем функцию ЕСЛИ для того, чтобы определить допущен студент к экзамену или нет. Диалоговое окно Аргументы функции будет выглядеть вот так:

Важно: текстовый критерий в поле логическое_выражение должен быть заключен в кавычки. Иначе функция выдаст ошибку.

Если студен сдал зачет, он допущен к экзамену, если нет, то не допущен. Нажимаем ОК в диалоговом окне Аргументы функции и протягиваем функцию ЕСЛИ вниз, по всему столбцу Допуск к экзамену. Получаем:

Видим, что в зависимости от результатов сдачи зачета, студент допущен к экзамену, либо не допущен.

Обращаю внимание, что при работе с функцией ЕСЛИ, можно использовать разные варианты равенств: больше (>), меньше( =), меньше или равно ( ).

Функция ЕСЛИ в MS Excel с несколькими условиями.

Предположим, что у нас есть таблица с результатами сдачи контрольной работы студентами ВУЗа. Результаты контрольной работы оцениваются в баллах. От 0 до 100. Где все, что выше 90 баллов, отлично. Выше 80 баллов, это хорошо. Выше 70 баллов, это удовлетворительно. Ниже 70 баллов, это плохо.

Формула функции ЕСЛИ будет выглядеть вот так:

Где ячейка С3, первая из проверяемых ячеек в столбце Оценка. Далее функция протянута вниз по столбцу Результат, до конца таблицы.

Внимание: в данном случае формула функции ЕСЛИ прописана в ручную, прямо в строе формулы.

Таблица выглядит вот так:

В столбце Результат, в зависимости от количества баллов, функция ЕСЛИ вернула значение, согласно заданному критерию в формуле функции.

Использование операторов «И» и «ИЛИ» в функции ЕСЛИ в MS Excel.

Формула функции ЕСЛИ выглядит вот так:

Внимание: в данном случае формула функции ЕСЛИ прописана в ручную, прямо в строе формулы.

Формула функции ЕСЛИ выглядит вот так:

Внимание: в данном случае формула функции ЕСЛИ прописана в ручную, прямо в строе формулы.

Источник

Понравилась статья? Поделить с друзьями:
  • Excel как определить границы ячейки
  • Excel как определить время суток
  • Excel как определить високосный год
  • Excel как округлить число до сотых
  • Excel как округлить число до сотен