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

 
 

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 Май 2011              81498 просмотров


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

Начиная с версий 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
ссылки
статистика


Задача функции

ЕЧИСЛО()

, английский вариант ISNUMBER(),

— проверять являются ли значения числами или нет. Формула

=

ЕЧИСЛО(5)

вернет ИСТИНА, а

=ЕЧИСЛО(«Привет!»)

вернет ЛОЖЬ.


Синтаксис функции

ЕЧИСЛО()


ЕЧИСЛО

(

значение

)


Значение

— значением может быть все что угодно: текст, число, ссылка,

имя

,

пустая ячейка

, значение ошибки, логическое выражение.

Использование функции

В

файле примера

приведены несколько вариантов проверок:

1. Если в качестве значения на вход подается число и формат ячейки НЕ был установлен Текстовый, то функция вернет логическое значение ИСТИНА. Если формат ячейки с числом изменить на Текстовый уже после того, как функция вернула значение ИСТИНА, то она не станет возвращать значение ЛОЖЬ.

2. Если в качестве значения на вход подается число и формат ячейки был установлен Текстовый (до ввода числа в ячейку), то функция вернет логическое значение ЛОЖЬ. Если формат ячейки с числом изменить на Числовой уже после того, как функция вернула значение ЛОЖЬ, то она не станет возвращать значение ИСТИНА.

Вывод: функция

ЕЧИСЛО()

не пытается конвертировать значения в числовой формат. Однако, ее легко заставить делать это. Если в ячейке

А1

число сохранено как текст, то формула =

ЕЧИСЛО(—A1)

вернет ИСТИНА, а =

ЕЧИСЛО(A1)

— ЛОЖЬ.

3. Логические значения ЛОЖЬ и ИСТИНА формально в EXCEL числами не являются и это доказывает тот факт, что формулы

=ЕЧИСЛО(ЛОЖЬ)

и

=ЕЧИСЛО(ИСТИНА)

вернут ЛОЖЬ. Однако, значениям ЛОЖЬ и ИСТИНА сопоставлены значения 0 и 1 соответственно, поэтому формулы

=ЕЧИСЛО(—ЛОЖЬ)

и

=ЕЧИСЛО(—ИСТИНА)

вернут ИСТИНА.

4. Функция

ЕЧИСЛО()

обычно используется в паре с функцией

ЕСЛИ()

. Например, формула

=ЕСЛИ(ЕЧИСЛО(B6);»Число»;»Не число»)

вернет слово

Число

, если в ячейке

В6

находится число (в числовом формате).

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

Для поиска текста также можно использовать фильтр. Дополнительные сведения см. в теме Фильтрация данных.

Поиск ячеек, содержащих текст

Чтобы найти ячейки, содержащие определенный текст, выполните указанные здесь действия.

Вы диапазон ячеек, в которые нужно в поиске.

Чтобы найти результат поиска на всем из них, щелкните любую ячейку.

На вкладке Главная в группе Редактирование нажмите кнопку Найти и & выберите, а затем нажмите кнопку Найти.

Параметр "Найти" на ленте

В поле Найти введите текст (или числа), который нужно найти. Вы также можете выбрать недавний поиск в поле Найти.

Примечание: В условиях поиска можно использовать поддеревные знаки.

Чтобы указать формат поиска, нажмите кнопку Формат и сделайте выбор во всплыващем окне Найти формат.

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

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

Нажмите кнопку Найти все или Найти далее.

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

Примечание: Чтобы остановить поиск, нажмите клавишу ESC.

Проверьте, есть ли в ячейке текст

Для этого используйте функцию ЕТЕКСТ.

Примеры ЕТЕКСТ

Проверка того, совпадает ли ячейка с определенным текстом

Используйте функцию ЕСЛИ для возврата результатов для заского условия.

Примеры ЕСЛИ

Проверка того, совпадает ли часть ячейки с определенным текстом

Для этого используйте функции ЕСЛИ,ПОИСКи Е ЧИСЛОЭЛЕБР.

Примечание: Функция ПОИСК не имеет чувствительность к делу.

Функция ЕЧИСЛО() в EXCEL

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

Использование функции

В файле примера приведены несколько вариантов проверок:

1. Если в качестве значения на вход подается число и формат ячейки НЕ был установлен Текстовый, то функция вернет логическое значение ИСТИНА. Если формат ячейки с числом изменить на Текстовый уже после того, как функция вернула значение ИСТИНА, то она не станет возвращать значение ЛОЖЬ.

2. Если в качестве значения на вход подается число и формат ячейки был установлен Текстовый (до ввода числа в ячейку), то функция вернет логическое значение ЛОЖЬ. Если формат ячейки с числом изменить на Числовой уже после того, как функция вернула значение ЛОЖЬ, то она не станет возвращать значение ИСТИНА.

Вывод: функция ЕЧИСЛО() не пытается конвертировать значения в числовой формат. Однако, ее легко заставить делать это. Если в ячейке А1 число сохранено как текст, то формула = ЕЧИСЛО(—A1) вернет ИСТИНА, а = ЕЧИСЛО(A1) — ЛОЖЬ.

3. Логические значения ЛОЖЬ и ИСТИНА формально в EXCEL числами не являются и это доказывает тот факт, что формулы =ЕЧИСЛО(ЛОЖЬ) и =ЕЧИСЛО(ИСТИНА) вернут ЛОЖЬ. Однако, значениям ЛОЖЬ и ИСТИНА сопоставлены значения 0 и 1 соответственно, поэтому формулы =ЕЧИСЛО(—ЛОЖЬ) и =ЕЧИСЛО(—ИСТИНА) вернут ИСТИНА.

4. Функция ЕЧИСЛО() обычно используется в паре с функцией ЕСЛИ() . Например, формула =ЕСЛИ(ЕЧИСЛО(B6);»Число»;»Не число») вернет слово Число , если в ячейке В6 находится число (в числовом формате).

Как в Excel определить содержит ли ячейка число

Как в Excel определить содержит ли ячейка число

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

Основная формула

Описание

Чтобы проверить, содержит ли ячейка (или любая текстовая строка) число, вы можете использовать функцию НАЙТИ вместе с функцией СЧЁТ. В основной форме формулы (см. выше) A1 представляет ячейку, которую вы тестируете. Проверяемые числа (числа от 0 до 9) предоставляются в виде массива.
В этом примере формула в C5 имеет вид:

Пояснение

Функция НАЙТИ возвращает положение текста в ячейке и ошибку #ЗНАЧЕН!, если нет. В этом примере ячейка B5 содержит число «4» в 5 позиции. Итак, если бы мы просто использовали эту формулу:

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

Другими словами, НАЙТИ проверяет содержимое B5 для каждого числа и возвращает результат каждой проверки как элемент массива.
После того, как НАЙТИ вернет массив, СЧЁТ считает элементы в массиве. СЧЁТ считает только числовые значения, поэтому любой элемент #ЗНАЧЕН! в массиве обрабатывается как ноль. Если в массиве есть числа СЧЁТ вернет число больше нуля, если нет то вернет ноль.
Последний шаг в формуле — сравнение результата функций НАЙТИ и СЧЁТ с нулем. Если были найдены какие-либо числа, формула вернет ИСТИНА. В противном случае формула вернет ЛОЖЬ.
Если вы хотите сделать что-то большее, чем просто проверить, содержит ли ячейка текст, вы можете заключить формулу в оператор ЕСЛИ следующим образом:

Вместо того, чтобы возвращать ИСТИНА или ЛОЖЬ, приведенная выше формула возвращает «Да», если B5 содержит какие-либо числа, и «Нет», если не содержит.

Содержит ли ячейка числовое значение?

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

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

Автор Василий Алибабаевич, 02.06.2008, 17:51

« назад — далее »

Задача отфильтровать ячейки с формулами.
Допустим в столбце протянута формула, затем в результате ручного труда часть результатов формулы заменяется на значения, ну или просто есть большая таблица, где-то у нее значения, а где-то подитоги. Вспомогательных столбцов справа можно делать столько сколько нужно.
Как выяснить, что в ячейке не значение, не текст, а именно формула.
Причем формула может быть, как =впр(A1;Лист2!A:C;3;0) , так и =С131+С13 .
;)


очень просто:
1. выделить диапазон
2. нажать Ctrl+G (одновременное нажатие клавишь Ctrl и G)
3. в диалоговом окне нажать «Выделить…»
4. поставить точку «формулы» (третье сверху слово в первом столбце)
5. нажать «Ок»


Есть ещё сочетание клавиш Ctrl+` (Показать формулы)


Цитата: DaniilK от 02.06.2008, 18:27
очень просто:
1. выделить диапазон
2. нажать Ctrl+G (одновременное нажатие клавишь Ctrl и G)
3. в диалоговом окне нажать «Выделить…»
4. поставить точку «формулы» (третье сверху слово в первом столбце)
5. нажать «Ок»

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

Я сейчас использую такой способ: Он требует создания вспомогательного столбца (справа).
Создается вспомогательный столбец, в который простым копированием копируется содержимое искомого столбца. Затем запускается автозамена: Заменить =* на «Здесь формула»  . Таким образом все ячейки с формулами меняются на текст «здесь формула», а все ячейки со значениями остаются как и были.
Вот как-бы автоматизировать процесс… ну да ладно..  ;D Т.е. есть ли такая функция, которая бы работала не с результатом ячейки, прямо с тем содержанием, которое в строке формул у этой чейки…?  ???


http://www.msoffice.nm.ru/faq/formula2.htm#faq43
Как с помощью формул определить содержит ли ячейка формулу?
В меню Вставка выберите пункт Имя, далее выберите команду Присвоить. В диалоговом окне Присвоение имени в поле Имя введите нужное имя, например ЕФОРМУЛА, а в поле Формула введите следущую формулу :
=ПОЛУЧИТЬ.ЯЧЕЙКУ(48;$A$1)
и нажмите кнопку ОК. Затем, выберите нужную ячейку и введите именованную формулу =ЕФОРМУЛА
Эта формула возвратит логическое значение ИСТИНА — если в указанной ячейке находится формула, и ЛОЖЬ — если ячейка пустая или содержит константу.


Спасибо и за пример и за ссылку — ЭТО ПРОСТО КЛАДЕЗЬ!



Цитата: DaniilK от 03.06.2008, 11:06
В меню Вставка выберите пункт Имя, далее выберите команду Присвоить. В диалоговом окне Присвоение имени в поле Имя введите нужное имя, например ЕФОРМУЛА

Если кто-то через поиск зайдёт в эту тему, то в свежем Excel такая формула есть по умолчанию. Так и называется, ЕФОРМУЛА.


  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

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

Функция ЕЧИСЛО в Excel используется для проверки данных, поступающих на вход, — является ли ее аргумент числовым значением, и возвращает результат в виде логического значения ИСТИНА, если указанное значение является числовым, и ЛОЖЬ, если переданное в качестве аргумента является другим типом данных.

Примеры использования функции ЕЧИСЛО в Excel

Пример 1. В таблице содержатся оценки за семестр для учеников по указанным предметам. Некоторые ученики не сдали экзамены и не имеют оценок. Рассчитать средние баллы для тех учеников, которые успели получить оценки по всем предметам.

Вид таблицы данных:

Пример 1.

Для расчетов используем следующую формулу:

Функция ЕСЛИ с помощью функции И выполняет проверку нескольких условий (результатов выполнения функции ЕЧИСЛО, проверяющей каждую ячейку на наличие числового значения с оценкой по предмету). Если хотя бы одна из функций возвращает значение ЛОЖЬ, функция И вернет ЛОЖЬ. В этом случае будет выведена текстовая строка «Есть несданные», иначе – функция СРЗНАЧ произведет расчет.

Результат выполнения для первого ученика:

ЕЧИСЛО.

Таким образом мы определили пустые ячейки в строках и столбцах таблицы.



Суммирование ячеек с числами и текстом в Excel

Пример 2. В таблице содержатся данные о суммарной выручке двух магазинов по дням. В некоторых ячейках содержатся текстовые данные “N”, свидетельствующие о том, что магазин не имел выручки. Рассчитать суммарную выручку для магазинов по дням.

Вид таблицы данных:

Пример 2.

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

Алгоритм работы:

  1. Первая функция ЕСЛИ проверяет условие, заданное функцией И.
  2. Если оба проверяемых выражения (результаты работы рассматриваемой функции) вернут значение ИСТИНА (то есть являются числами), будет выполнена функция СУММ.
  3. Если одна из функций ЕЧИСЛО вернет значение ЛОЖЬ, будет выполнена проверка дополнительной функцией ЕСЛИ (проверка первой ячейки на содержание числовых данных).
  4. Если первая ячейка хранит число, будет возвращено его значение, иначе – возвращается значение, хранящееся в другой ячейке.

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

Результат вычислений:

Формула СУММ ЕЧИСЛО и ЕСЛИ.

Описание аргументов функции ЕЧИСЛО в Excel

Функция имеет следующую синтаксическую запись:

=ЕЧИСЛО(значение)

Единственным аргументом, обязательным для заполнения, является значение – принимает данные любого типа (логические, числовые, текстовые, имена, ссылочные) для проверки на соответствие числовым данным.

Примечания:

  1. В некоторых случаях функция ЕЧИСЛО возвращает значение ИСТИНА для чисел, хранящихся в ячейках, отформатированных как текст. Обычно, прямое преобразование не выполняется (например: =ЕЧИСЛО(“2”) вернет значение ЛОЖЬ). Следует быть осторожным с выполнением вычислений над такими данными, всегда устанавливать соответствующий формат данных для ячеек.
  2. Функция не выполняет промежуточных преобразований логических данных. Например, результатом выполнения =ЕЧИСЛО(ИСТИНА) будет логическое ЛОЖЬ. В Excel предусмотрена возможность прямого преобразования данных с использованием знака двойного отрицания «—». Например, результат выполнения функции =ЕЧИСЛО(—ИСТИНА) – логическое ИСТИНА.
  3. Рассматриваемую функцию обычно используют в качестве аргумента с проверкой условия для функции ЕСЛИ.
  4. Если в качестве аргумента функции передана ссылка на ячейку, содержащую число, возможны два варианта возвращаемых значений:
  • ИСТИНА, если формат ячейки установлен по умолчанию или является числовым;
  • ЛОЖЬ, если ячейка имеет текстовый формат.

Для версий старше Exel-2013 такого функционала (без использования VBA), к сожалению, нет.
Но вариант есть — использование макрофункций.

Не VBA, но макросы должны быть разрешены. На листе не используются, но применимы в именах.
С помощью функции ПОЛУЧИТЬ.ЯЧЕЙКУ можно определить содержимое ячейки, ее адрес, заливку…

Ctrl+F3 — мы в Диспетчере_имен. Создать имя (пусть будет «тестформула»), в поле Диапазон вписать формулу:

 =ПОЛУЧИТЬ.ЯЧЕЙКУ(6;Лист1!$A$1)

На листе в любой ячейке:

=тестформула

Если в ячейке А1 константа, результат — константа, если формула — отобразится формула. А что такое формула? Текст, который начинается знаком «=». Отлично! Можно научиться определять, что находится в А1:

=ЕСЛИ(ЛЕВСИМВ(тестформула)="=";"формула";"значение")

‘ —————

Чем это может помочь при контроле вводимых данных?

Имя у нас уже есть. Доработаем:

=ЛЕВСИМВ(ПОЛУЧИТЬ.ЯЧЕЙКУ(6;Лист1!$A$1)="="

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

Пишем в C1:

=тестформула

В проверке данных ячейки А1:

=C1

Порядок, получили замену для ЕФОРМУЛА :)

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