Как отличить формулу от числа в excel
Формулы – это хорошо. Они автоматически пересчитываются при любом изменении исходных данных, превращая Excel из "калькулятора-переростка" в мощную автоматизированную систему обработки поступающих данных. Они позволяют выполнять сложные вычисления с хитрой логикой и структурой. Но иногда возникают ситуации, когда лучше бы вместо формул в ячейках остались значения. Например:
- Вы хотите зафиксировать цифры в вашем отчете на текущую дату.
- Вы не хотите, чтобы клиент увидел формулы, по которым вы рассчитывали для него стоимость проекта (а то поймет, что вы заложили 300% маржи на всякий случай).
- Ваш файл содержит такое больше количество формул, что Excel начал жутко тормозить при любых, даже самых простых изменениях в нем, т.к. постоянно их пересчитывает (хотя, честности ради, надо сказать, что это можно решить временным отключением автоматических вычислений на вкладке Формулы – Параметры вычислений).
- Вы хотите скопировать диапазон с данными из одного места в другое, но при копировании "сползут" все ссылки в формулах.
В любой подобной ситуации можно легко удалить формулы, оставив в ячейках только их значения. Давайте рассмотрим несколько способов и ситуаций.
Способ 1. Классический
Этот способ прост, известен большинству пользователей и заключается в использовании специальной вставки:
- Выделите диапазон с формулами, которые нужно заменить на значения.
- Скопируйте его правой кнопкой мыши – Копировать(Copy) .
- Щелкните правой кнопкой мыши по выделенным ячейкам и выберите либо значок Значения (Values) :
либо наведитесь мышью на команду Специальная вставка (Paste Special) , чтобы увидеть подменю:
Из него можно выбрать варианты вставки значений с сохранением дизайна или числовых форматов исходных ячеек.
В старых версиях Excel таких удобных желтых кнопочек нет, но можно просто выбрать команду Специальная вставка и затем опцию Значения (Paste Special - Values) в открывшемся диалоговом окне:
Способ 2. Только клавишами без мыши
При некотором навыке, можно проделать всё вышеперечисленное вообще на касаясь мыши:
- Копируем выделенный диапазон Ctrl + C
- Тут же вставляем обратно сочетанием Ctrl + V
- Жмём Ctrl , чтобы вызвать меню вариантов вставки
- Нажимаем клавишу с русской буквой З или используем стрелки, чтобы выбрать вариант Значения и подтверждаем выбор клавишей Enter :
Способ 3. Только мышью без клавиш или Ловкость Рук
Этот способ требует определенной сноровки, но будет заметно быстрее предыдущего. Делаем следующее:
- Выделяем диапазон с формулами на листе
- Хватаем за край выделенной области (толстая черная линия по периметру) и, удерживая ПРАВУЮ клавишу мыши, перетаскиваем на пару сантиметров в любую сторону, а потом возвращаем на то же место
- В появившемся контекстном меню после перетаскивания выбираем Копировать только значения (Copy As Values Only) .
После небольшой тренировки делается такое действие очень легко и быстро. Главное, чтобы сосед под локоть не толкал и руки не дрожали ;)
Способ 4. Кнопка для вставки значений на Панели быстрого доступа
Ускорить специальную вставку можно, если добавить на панель быстрого доступа в левый верхний угол окна кнопку Вставить как значения. Для этого выберите Файл - Параметры - Панель быстрого доступа (File - Options - Customize Quick Access Toolbar) . В открывшемся окне выберите Все команды (All commands) в выпадающем списке, найдите кнопку Вставить значения (Paste Values) и добавьте ее на панель:
Теперь после копирования ячеек с формулами будет достаточно нажать на эту кнопку на панели быстрого доступа:
Кроме того, по умолчанию всем кнопкам на этой панели присваивается сочетание клавиш Alt + цифра (нажимать последовательно). Если нажать на клавишу Alt , то Excel подскажет цифру, которая за это отвечает:
Способ 5. Макросы для выделенного диапазона, целого листа или всей книги сразу
Если вас не пугает слово "макросы", то это будет, пожалуй, самый быстрый способ.
Макрос для превращения всех формул в значения в выделенном диапазоне (или нескольких диапазонах, выделенных одновременно с Ctrl) выглядит так:
Если вам нужно преобразовать в значения текущий лист, то макрос будет таким:
И, наконец, для превращения всех формул в книге на всех листах придется использовать вот такую конструкцию:
Код нужных макросов можно скопировать в новый модуль вашего файла (жмем Alt + F11 чтобы попасть в Visual Basic, далее Insert - Module). Запускать их потом можно через вкладку Разработчик - Макросы (Developer - Macros) или сочетанием клавиш Alt + F8 . Макросы будут работать в любой книге, пока открыт файл, где они хранятся. И помните, пожалуйста, о том, что действия выполненные макросом невозможно отменить - применяйте их с осторожностью.
Способ 6. Для ленивых
Если ломает делать все вышеперечисленное, то можно поступить еще проще - установить надстройку PLEX, где уже есть готовые макросы для конвертации формул в значения и делать все одним касанием мыши:
Функция ЕЧИСЛО в Excel используется для проверки данных, поступающих на вход, - является ли ее аргумент числовым значением, и возвращает результат в виде логического значения ИСТИНА, если указанное значение является числовым, и ЛОЖЬ, если переданное в качестве аргумента является другим типом данных.
Примеры использования функции ЕЧИСЛО в Excel
Пример 1. В таблице содержатся оценки за семестр для учеников по указанным предметам. Некоторые ученики не сдали экзамены и не имеют оценок. Рассчитать средние баллы для тех учеников, которые успели получить оценки по всем предметам.
Вид таблицы данных:
Для расчетов используем следующую формулу:
Функция ЕСЛИ с помощью функции И выполняет проверку нескольких условий (результатов выполнения функции ЕЧИСЛО, проверяющей каждую ячейку на наличие числового значения с оценкой по предмету). Если хотя бы одна из функций возвращает значение ЛОЖЬ, функция И вернет ЛОЖЬ. В этом случае будет выведена текстовая строка «Есть несданные», иначе – функция СРЗНАЧ произведет расчет.
Результат выполнения для первого ученика:
Таким образом мы определили пустые ячейки в строках и столбцах таблицы.
Суммирование ячеек с числами и текстом в Excel
Пример 2. В таблице содержатся данные о суммарной выручке двух магазинов по дням. В некоторых ячейках содержатся текстовые данные “N”, свидетельствующие о том, что магазин не имел выручки. Рассчитать суммарную выручку для магазинов по дням.
Вид таблицы данных:
Для расчета суммарной выручки за первый день используем следующую формулу:
- Первая функция ЕСЛИ проверяет условие, заданное функцией И.
- Если оба проверяемых выражения (результаты работы рассматриваемой функции) вернут значение ИСТИНА (то есть являются числами), будет выполнена функция СУММ.
- Если одна из функций ЕЧИСЛО вернет значение ЛОЖЬ, будет выполнена проверка дополнительной функцией ЕСЛИ (проверка первой ячейки на содержание числовых данных).
- Если первая ячейка хранит число, будет возвращено его значение, иначе – возвращается значение, хранящееся в другой ячейке.
Недостаток данной функции – не предусматривает вероятность ситуации, когда в обеих смежных ячейках строки хранятся нечисловые данные. Предположим, 2 магазина не могут не работать одновременно.
Описание аргументов функции ЕЧИСЛО в Excel
Функция имеет следующую синтаксическую запись:
Единственным аргументом, обязательным для заполнения, является значение – принимает данные любого типа (логические, числовые, текстовые, имена, ссылочные) для проверки на соответствие числовым данным.
Начиная с версий 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 отображает формулу вместо результата
Здравствуйте, друзья. Бывало ли у Вас, что, после ввода формулы, в ячейке отображается сама формула вместо результата вычисления? Это немного обескураживает, ведь Вы сделали все правильно, а получили непонятно что. Как заставить программу вычислить формулу в этом случае?
Для начала нужно разобраться с причинами такого поведения, после чего исправлять ситуацию. А причины могут быть такими.
Включено отображение формул
В Экселе есть режим проверки вычислений. Когда он включен, вы видите на листе формулы. Как и зачем применять отображение формул, я рассказывал в этой статье. Проверьте, возможно он активирован, тогда отключите. На ленте есть кнопка Формулы – Зависимости формул – Показать формулы . Если она включена – кликните, по ней, чтобы отключить.
Часто показ формул включают случайно, нажав комбинацию клавиш Ctrl+` .
Формула воспринимается программой, как текст
Если Excel считает, что в ячейке текстовая строка, он не будет вычислять значение, а просто выведет на экран содержимое. Причин тому может быть несколько:
- В ячейке установлен текстовый формат. Для программы это сигнал, что содержимое нужно вывести в том же виде, в котором оно хранится.
Измените формат на Числовой, как сказано здесь. - Нет знака «=» вначале формулы. Как я рассказывал в статье о правилах написания формул, любые вычисления начинаются со знака «равно».
Если его упустить – содержимое будет воспринято, как текст. Добавьте знак равенства и пересчитайте формулу. - Пробел перед «=». Если перед знаком равенства случайно указан пробел, это тоже будет воспринято, как текст.
Эту ошибку сложно заметить, поэтому придется проверять вручную. Удалите лишний пробел и пересчитайте. - Формула заключена в кавычки. Такая ошибка случается, когда работаем с текстовыми данными. Само собой, информация в кавычках трактуется, как текст.
Удалите лишние кавычки, нажмите Enter , чтобы пересчитать.
Я перечислил все распространенные случаи, когда формула отображается вместо результата. Думаю, Ваш случай будет в приведенном списке, устранить проблему не составит труда. Если не получилось – пишите в комментариях.
Следующая статья обещает быть очень интересной. Мы рассмотрим некоторые простые приемы быстрого написания формул. Если довести их до автоматизма, Ваша работа будет выполняться проще и быстрее. Подпишитесь на обновления, чтобы не пропустить!
Добавить комментарий Отменить ответ
4 комментариев
В экселе есть баг. Наша компания даже создавал инцидент, но Microsoft написал, что устранен будет в следующих версиях.
Баг: иногда, если формат указан как текстовый, то ексель не воспринимает формулу как формулу, даже если сменить формат. Это могут быть две одинаковые ячейки с одинаковыми параметрами, но в одной ексель рассчитывает формулу, а в другой нет.
Лечение: заменить формат на общий, дважды щелкнуть на ячейку, нажать Enter.
Формула в EXCEL отображается как Текстовая строка
Бывает, что введя формулу и нажав клавишу ENTER пользователь видит в ячейке не результат вычисления формулы, а саму формулу. Причина — Текстовый формат ячейки. Покажем как в этом случае заставить формулу работать.
Итак, по какой-то причине пользователь ввел формулу в ячейку с Тектовым форматом.
Заставить EXCEL интерпретировать введенное в ячейку выражение как формулу, а не как текст — очень просто: нажмите клавишу F2 , затем ENTER (ВВОД) .
Ниже приведено более подробное объяснение:
- выделите ячейку с формулой (на рисунке это ячейка А1 );
- формат ячейки установите Общий (нажав CTRL+1 и выбрав соответствующий Числовой формат или через меню Главное/ Число/ Числовой формат );
- нажмите клавишу F2 (т.е. войдите в Режим Правки ячейки) или поставьте курсор в Строку формул ;
- нажмите ENTER .
Если таких текстовых ячеек с формулами много, то исправьте первую ячейк как показано выше, затем протяните ее ниже (если конечно формулы однотипные).
Если на листе десятки разных формул в таком формате (скорее всего они были импортированы в EXCEL из другого приложения), то скорее всего придется бороться с каждой формулой индивидуально.
Однако, если перед формулами стоит апостроф (‘), то существует подход, который позволяет быстро преобразовать значение ячейки в формулу. Апостроф сообщает EXCEL что ячейка д.б. текстовой не зависимо от того какой фактически установлен Формат ячеек. В Строке формул значения такой ячейки выглядят, например, как ‘=C15.
Формально слевастоящий апостроф не является символом и инструмент Найти/Заменить не сработает, но сработает Текст-по-столбцам :
- Выделите столбец с формулами (формулы м.б. разными)
- Вызовите Текст-по-столбцам
- После вызова этого инструмента во втором окне укажите в качестве разделителя апостроф ‘
- Нажмите Готово
Все апострофы удалятся и формулы заработают. Но, проблемой может быть, если Ваши формулы содержат апострофы. Сначала замените апострофы на какой либо редкий символ (
, который заведомо не встречается в Ваших формулах) или их последовательность (слевастоящие апострофы это не затронет), затем избавьтесь от слевастоящих апострофов. И наконец, сделайте обратную замену редкого символа на апостроф.
В ячейке Excel отображается формула
Одной из наиболее востребованных возможностей Excel является работа с формулами. Благодаря данной функции программа самостоятельно производит различного рода расчеты в таблицах. Но иногда случается так, что пользователь вписывает формулу в ячейку, но она не выполняет своего прямого назначения — вычисления результата. Давайте разберемся, с чем это может быть связано, и как решить данную проблему.
Устранение проблем с вычислением
Причины проблем с вычислением формул в Экселе могут быть совершенно разными. Они могут быть обусловлены, как настройками конкретной книги или даже отдельного диапазона ячеек, так и различными ошибками в синтаксисе.
Способ 1: изменение формата ячеек
Одной из самых распространенных причин, по которой Эксель вообще не считает или не правильно считает формулы, является неверно выставленный формат ячеек. Если диапазон имеет текстовый формат, то расчет выражений в нем вообще не производится, то есть, они отображаются как обычный текст. В других случаях, если формат не соответствует сути рассчитываемых данных, результат, выводимый в ячейку, может отображаться некорректно. Давайте выясним, как решить эту проблему.
-
Для того, чтобы посмотреть, какой формат имеет конкретная ячейка или диапазон, переходим во вкладку «Главная». На ленте в блоке инструментов «Число» имеется поле отображения текущего формата. Если там указано значение «Текстовый», то формула точно вычисляться не будет.
Теперь будет производиться расчет формулы в стандартном порядке с выводом результата в указанную ячейку.
Способ 2: отключение режима «Показать формулы»
Но возможно причина того, что вместо результатов расчета у вас отображаются выражения, состоит в том, что в программе включен режим «Показать формулы».
-
Чтобы включить отображение итогов, переходим во вкладку «Формулы». На ленте в блоке инструментов «Зависимости формул», если кнопка «Показать формулы» активна, то кликаем по ней.
Способ 3: исправление ошибки в синтаксисе
Формула также может отображаться как текст, если в её синтаксисе были допущены ошибки, например, пропущена или изменена буква. Если вы вводили её вручную, а не через Мастер функций, то такое вполне вероятно. Очень распространенной ошибкой, связанной с отображением выражения, как текста, является наличие пробела перед знаком «=».
В таких случаях нужно внимательно пересмотреть синтаксис тех формул, которые неправильно отображаются, и внести в них соответствующие коррективы.
Способ 4: включение пересчета формулы
Бывает и такая ситуация, что формула вроде и отображает значение, но при изменении связанных с ней ячеек сама не меняется, то есть, результат не пересчитывается. Это означает, что у вас неправильно настроены параметры вычислений в данной книге.
-
Перейдите во вкладку «Файл». Находясь в ней, следует кликнуть по пункту «Параметры».
Теперь все выражения в данной книге будут автоматически пересчитываться при изменении любого связанного значения.
Способ 5: ошибка в формуле
Если же программа все-таки производит расчет, но в результате показывает ошибку, то тут вероятна ситуация, что пользователь просто ошибся при вводе выражения. Ошибочными формулами считаются те, при расчете которых в ячейке появляются следующие значения:
В этом случае нужно проверить, правильно ли записаны данные в ячейках, на которые ссылается выражение, нет ли в них ошибок в синтаксисе или не заложено ли в самой формуле какое-либо некорректное действие (например, деление на 0).
Если функция сложная, с большим количеством связанных ячеек, то легче проследить вычисления с помощью специального инструмента.
-
Выделяем ячейку с ошибкой. Переходим во вкладку «Формулы». На ленте в блоке инструментов «Зависимости формул» кликаем по кнопке «Вычислить формулу».
Как видим, причины того, что Эксель не считает или не правильно считает формулы, могут быть совершенно различными. Если вместо расчета у пользователя отображается сама функция, тот в этом случае, скорее всего, либо ячейка отформатирована под текст, либо включен режим просмотра выражений. Также, возможна ошибка в синтаксисе (например, наличие пробела перед знаком «=»). В случае если после изменения данных в связанных ячейках результат не обновляется, то тут нужно посмотреть, как настроено автообновление в параметрах книги. Также, нередко вместо корректного результата в ячейке отображается ошибка. Тут нужно просмотреть все значения, на которые ссылается функция. В случае обнаружения ошибки следует устранить её.
Типовая задача, возникающая периодически перед каждым пользователем Excel - сравнить между собой два диапазона с данными и найти различия между ними. Способ решения, в данном случае, определяется типом исходных данных.
Вариант 1. Синхронные списки
Если списки синхронизированы (отсортированы), то все делается весьма несложно, т.к. надо, по сути, сравнить значения в соседних ячейках каждой строки. Как самый простой вариант - используем формулу для сравнения значений, выдающую на выходе логические значения ИСТИНА (TRUE) или ЛОЖЬ (FALSE) :
Число несовпадений можно посчитать формулой:
или в английском варианте =SUMPRODUCT(--(A2:A20<>B2:B20))
Если в результате получаем ноль - списки идентичны. В противном случае - в них есть различия. Формулу надо вводить как формулу массива, т.е. после ввода формулы в ячейку жать не на Enter, а на Ctrl+Shift+Enter.
Если с отличающимися ячейками надо что сделать, то подойдет другой быстрый способ: выделите оба столбца и нажмите клавишу F5, затем в открывшемся окне кнопку Выделить (Special) - Отличия по строкам (Row differences) . В последних версиях Excel 2007/2010 можно также воспользоваться кнопкой Найти и выделить (Find & Select) - Выделение группы ячеек (Go to Special) на вкладке Главная (Home)
Excel выделит ячейки, отличающиеся содержанием (по строкам). Затем их можно обработать, например:
- залить цветом или как-то еще визуально отформатировать
- очистить клавишей Delete
- заполнить сразу все одинаковым значением, введя его и нажав Ctrl+Enter
- удалить все строки с выделенными ячейками, используя команду Главная - Удалить - Удалить строки с листа (Home - Delete - Delete Rows)
- и т.д.
Вариант 2. Перемешанные списки
Если списки разного размера и не отсортированы (элементы идут в разном порядке), то придется идти другим путем.
Самое простое и быстрое решение: включить цветовое выделение отличий, используя условное форматирование. Выделите оба диапазона с данными и выберите на вкладке Главная - Условное форматирование - Правила выделения ячеек - Повторяющиеся значения (Home - Conditional formatting - Highlight cell rules - Duplicate Values):
Если выбрать опцию Повторяющиеся, то Excel выделит цветом совпадения в наших списках, если опцию Уникальные - различия.
Цветовое выделение, однако, не всегда удобно, особенно для больших таблиц. Также, если внутри самих списков элементы могут повторяться, то этот способ не подойдет.
В качестве альтернативы можно использовать функцию СЧЁТЕСЛИ (COUNTIF) из категории Статистические, которая подсчитывает сколько раз каждый элемент из второго списка встречался в первом:
Полученный в результате ноль и говорит об отличиях.
И, наконец, "высший пилотаж" - можно вывести отличия отдельным списком. Для этого придется использовать формулу массива:
Читайте также: