Как получить формулу из ячейки 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, где уже есть готовые макросы для конвертации формул в значения и делать все одним касанием мыши:
= Мир MS Excel/Статьи об Excel
Функции листа. Функции баз данных [1] |
Функции листа. Функции даты и времени [5] |
Функции листа. Функции инженерные [1] |
Функции листа. Функции информационные [2] |
Функции листа. Функции логические [10] |
Функции листа. Функции математические [4] |
Функции листа. Функции статистические [1] |
Функции листа. Функции текстовые [1] |
Функции листа. Функции финансовые [1] |
Функции листа. Функции ссылок и массивов [2] |
Функции листа. Функции аналитические [1] |
Функции листа. Функции определённые пользователем [1] |
Функция диаграмм [1] |
Макрофункции [37] |
ПОЛУЧИТЬ.ФОРМУЛУ( ссылка )
Ссылка -- ячейка или интервал ячеек на листе.
Если выделен интервал ячеек, функция ПОЛУЧИТЬ.ФОРМУЛУ возвращает содержимое верхней левой ячейки из ссылки.
Ссылка может быть внешней ссылкой.
Ссылка может быть идентификатором объекта-рисунка, созданного кнопкой «Фотоаппарат».
Ссылка может быть также ссылкой на ряд диаграммы вида «Pn», где n -- номер ряда. Если указан ряд диаграммы, функция ПОЛУЧИТЬ.ФОРМУЛУ возвращает формулу ряда с использованием ссылок в стиле R1C1.
Содержимое ячейки возвращается в текстовом виде, например, «=2*ПИ()/360». Если формула содержит ссылки, они возвращаются в стиле R1C1, например, «=СК[1]*(1+R1C1)». Функция ПОЛУЧИТЬ.ФОРМУЛУ используется, чтобы извлечь формулу из ячейки для редактирования ее аргументов. Для получения формулы в формате А1 или R1C1, в зависимости от установок рабочего пространства, используйте функцию ПОЛУЧИТЬ.ЯЧЕЙКУ(6).
Если ячейка А3 активного листа содержит число 523, то:
Если ячейка С2 активного листа содержит формулу =В2*(1+$А$1), то
Следующая макроформула возвращает содержимое активной ячейки активного листа:
= Мир MS Excel/Статьи об Excel
Функции листа. Функции баз данных [1] |
Функции листа. Функции даты и времени [5] |
Функции листа. Функции инженерные [1] |
Функции листа. Функции информационные [2] |
Функции листа. Функции логические [10] |
Функции листа. Функции математические [4] |
Функции листа. Функции статистические [1] |
Функции листа. Функции текстовые [1] |
Функции листа. Функции финансовые [1] |
Функции листа. Функции ссылок и массивов [2] |
Функции листа. Функции аналитические [1] |
Функции листа. Функции определённые пользователем [1] |
Функция диаграмм [1] |
Макрофункции [37] |
ПОЛУЧИТЬ.ЯЧЕЙКУ( ном_типа ; ссылка )
Ном_типа -- число, определяющее, какой тип информации о ячейке вы хотите получить. Следующий список показывает возможные значения аргумента и соответствующие результаты.
1 Абсолютную ссылку верхней левой ячейки в аргументе ссылка в виде текста в текущем стиле рабочего пространства.
2 Номер строки верхней ячейки в аргументе ссылка.
3 Номер столбца самой верхней ячейки в аргументе ссылка.
4 То же, что и ТИП(ссылка).
5 Содержимое аргумента ссылка.
6 Формула в аргументе ссылка в виде текста, стиль которого А1 или R1C1 -- в зависимости от параметров рабочего пространства.
7 Номер формата ячейки (например, «М/Д/ГГ» или «Основной»).
8 Число, показывающее горизонтальное выравнивание ячейки:
1 = Нормальное
2 = Левое
3 = По центру
4 = Правое
5 = Заполнить
6 = По обоим краям
7 = Центрировать через ячейки
0 = Без границы
1 = Тонкая линия
2 = Средняя линия
3 = Штриховая линия
4 = Пунктирная линия
5 = Толстая линия
6 = Двойная линия
7 = Самая тонкая линия
10 Число, показывающее стиль правой границы, назначаемый ячейке. Возвращаемые числа см. в описании аргумента ном_типа 9.
11 Число, показывающее стиль верхней границы, назначаемый ячейке. Возвращаемые числа см. в описании аргумента ном_типа 9.
12 Число, показывающее стиль нижней границы, назначаемый ячейке. Возвращаемые числа см. в описании аргумента ном_типа 9.
13 Число от 0 до 18, показывающее узор выделенной ячейки как выводимый на экран на панели «Узоры» диалогового окна Формат ячеек, которое появляется, если в меню Формат выбрать команду Ячейки. Если узор не выбран, возвращается значение 0.
14 Если ячейка заблокирована, возвращается значение ИСТИНА, иначе возвращается значение ЛОЖЬ.
15 Если ячейка скрыта, возвращается значение ИСТИНА, иначе возвращается ЛОЖЬ.
16 Горизонтальный массив из двух элементов, содержащий ширину активной ячейки и логическое значение, показывающее, установлена ли ширина ячейки в стандартное значение (ИСТИНА) или в пользовательское (ЛОЖЬ).
17 Высота ячейки в точках.
18 Имя шрифта в виде текста.
19 Размер шрифта в точках.
20 Если все символы ячейки или только первый символ выделены полужирным шрифтом, возвращается значение ИСТИНА, иначе возвращается ЛОЖЬ.
21 Если все символы ячейки или только первый символ выделены курсивом, возвращается значение ИСТИНА, иначе возвращается ЛОЖЬ.
22 Если все символы ячейки или только первый символ выделены подчеркиванием, возвращается значение ИСТИНА, иначе возвращается ЛОЖЬ.
23 Если все символы ячейки или только первый символ выделены перечеркиванием, возвращается значение ИСТИНА, иначе возвращается ЛОЖЬ.
24 Число от 1 до 56, обозначающее цвет шрифта. Если цвет шрифта выбран автоматически, возвращается значение 0.
25 Если все символы ячейки или только первый символ обведены контуром, возвращается значение ИСТИНА, иначе возвращается ЛОЖЬ. Этот тип не поддерживается Microsoft Excel для Windows.
26 Если все символы ячейки или только первый символ затанены, возвращается значение ИСТИНА, иначе возвращается ЛОЖЬ. Этот тип не поддерживается Microsoft Excel для Windows.
27 Число, показывающее, проходит ли разбиение на страницы рядом с ячейкой:
28 Уровень строки (контур).
29 Уровень столбца (контур).
30 Если содержимое строки активной ячейки является итоговой строкой, возвращается ИСТИНА, иначе возвращается ЛОЖЬ.
31 Если содержимое строки активной ячейки является итоговым столбцом, возвращается ИСТИНА, иначе возвращается ЛОЖЬ.
32 Наименование рабочей книги и листа, содержащих ячейку. Если окно содержит только один лист с тем же именем, что и рабочая книга без расширения, возвращается только имя книги в форме BOOK1.XLS. Иначе возвращается имя листа в форме «[Книга1]Лист1».
33 Если ячейка форматирована с переносом по словам, возвращается ИСТИНА, иначе возвращается ЛОЖЬ.
34 Число от 1 до 56, обозначающее цвет левой границы. Если цвет выбирается автоматически, возвращается 0.
35 Число от 1 до 56, обозначающее цвет правой границы. Если цвет выбирается автоматически, возвращается 0.
36 Число от 1 до 56, обозначающее цвет верхней границы. Если цвет выбирается автоматически, возвращается 0.
37 Число от 1 до 56, обозначающее цвет нижней границы. Если цвет выбирается автоматически, возвращается 0.
38 Число от 1 до 56, обозначающее цвет тени переднего плана. Если цвет выбирается автоматически, возвращается 0.
39 Число от 1 до 56, обозначающее цвет тени фона. Если цвет выбирается автоматически, возвращается 0.
40 Стиль ячейки в виде текста.
41 Возвращает формулу в активной ячейке (полезно для международных форматов листов макросов).
42 Горизонтальное расстояние, измеряемое в точках от левого края активного окна до левого края ячейки. Может быть отрицательным числом, если окно прокручивается вне ячейки.
43 Вертикальное расстояние, измеряемое в точках от верхнего края активного окна до верхнего края ячейки. Может быть отрицательным числом, если окно прокручивается вне ячейки.
44 Горизонтальное расстояние, измеряемое в точках от левого края активного окна до правого края ячейки. Может быть отрицательным числом, если окно прокручивается вне ячейки.
45 Вертикальное расстояние, измеряемое в точках от верхнего края активного окна до нижнего края ячейки. Может быть отрицательным числом, если окно прокручивается вне ячейки.
46 Если ячейка содержит текстовую заметку, возвращается ИСТИНА, иначе возвращается ЛОЖЬ.
47 Если ячейка содержит звуковую заметку, возвращается ИСТИНА, иначе возвращается ЛОЖЬ.
48 Если ячейка содержит формулу, возвращается ИСТИНА; если содержит константу -- возвращается ЛОЖЬ.
49 Если ячейка является частью массива, возвращается ИСТИНА, иначе возвращается ЛОЖЬ
50 Число, показывающее вертикальное выравнивание ячейки:
52 Символ префикса ячейки (или выравнивание текста) или пустой текст (««), если ячейка не содержит текста.
53 Содержимое ячейки, если она в данных момент выведена на экран в виде текста, включающего любые дополнительные цифры или символы, являющиеся результатом форматирования ячейки.
54 Возвращает имя сводной таблицы, содержащей активную ячейку.
55 Возвращает положение ячейки внутри сводной таблицы.
56 Возвращает имя поля, содержащего ссылку на активную ячейку, если оно находится внутри сводной таблицы.
57 Если все символы ячейки или только первый символ форматированы с надстрочным шрифтом, возвращается значение ИСТИНА, иначе возвращается ЛОЖЬ.
58 Возвращает стиль шрифта в виде текста всех символов ячейки или только первого символа, как показано в диалоговом окне Формат ячеек на вкладке «Шрифт». Например, «полужирный курсив».
59 Возвращает цифру для стиля «подчеркивание»:
60 Если все символы ячейки или только первый символ форматированы с подстрочным шрифтом, возвращается значение ИСТИНА, иначе возвращается ЛОЖЬ.
61 Возвращается имя элемента сводной таблицы для активной ячейки в виде текста.
62 Возвращает имя рабочей книги и текущего листа в форме «[Книга1]лист1».
63 Заполняет цветом ячейку (фон).
64 Возвращает узор фона ячейки.
65 Возвращает значение ИСТИНА, если включен параметр выравнивания доб_отступ (только для Microsoft Excel версии Far East); иначе возвращает ЛОЖЬ.
66 Возвращает имя рабочей книги, содержащей ячейку в форме BOOK1.XLS.
Ссылка -- ячейка или интервал ячеек, из которых вы хотите получить информацию.
Если ссылка является интервалом ячеек, в ней используется ячейка в верхнем левом углу первого интервала. Если аргумент опущен, предполагается активная ячейка.
Следующая макроформула возвращает значение ИСТИНА, если ячейка B4 на листе Лист1 выделена полужирным шрифтом:
Информацию, возвращенную функцией ПОЛУЧИТЬ.ЯЧЕЙКУ можно использовать для определения действия. Следующая макроформула выполняет пользовательскую функцию с именем BoldCell, если формула ПОЛУЧИТЬ.ЯЧЕЙКУ возвращает значение ЛОЖЬ:
Иногда бывает необходимо с помощью формул узнать о какой-либо ячейке подробную информацию и параметры, чтобы использовать это в расчетах. Например, выяснить число или текст в ячейке или какой числовой формат в ней установлен. Сделать это можно, используя функцию ЯЧЕЙКА (CELL) .
Синтаксис у функции следующий:
=ЯЧЕЙКА( Параметр ; Адрес )
где Адрес - это, понятное дело, ссылка на нужную ячейку, а вот Параметр - это кодовое слово, определяющее какую именно информацию о ячейке мы хотим получить. У этого аргумента несколько возможных значений:
Давайте рассмотрим пару трюков с применением этой функции на практике.
Например, можно получить имя текущего листа формулой, используя функцию ЯЧЕЙКА с параметром "имяфайла" и извлекающей все символы правее закрывающей квадратной скобки:
Или подсветить условным форматированием все незащищенные ячейки в заданном диапазоне:
Ссылки по теме
А я нашел на соседнем форуме другое решение отображения имени листа в конкретной ячейке
=--ПОДСТАВИТЬ(ПРАВБ(ЯЧЕЙКА("filename";A1);2);"]";)
Данное решение было нужно для отображения в ячейке L1 таблицы названия листа. Листы были переименованы от 1 до 53 по возможному количеству недель по ISO. На первом листе в ячейке J3 внесено начало конкретного года. Теперь внеся допустим в ячейку G4 формулу
=$J$3+L1*7-6 имеем дату начала конкретной недели, указанной в ячейке L1, а в любой другой формулой =G4+4 имеем дату окончания 5 дневной рабочей недели.
Очень удобно для составления еженедельных докладов, отчетов и тд.
А что такое ПРАВБ ? Имелось ввиду ПРАВСИМВ ?
И это будет работать только с числовыми именами листов, кстати.
Добрый день Николай! Да, изначально требовалось, чтобы имена листов имели цифровые наименования недель по ISO. Просто созданные отчетные файлы абсолютно идентичны, отличаются только годом и соответственно конкретными датами начала - окончания недель, при 5 дневной рабочей неделе.
Заметьте, если в формуле =G4+4 прибавить не 4, а 5 то получаем 6 дневную рабочую неделю, так как исходя из отображенного названия листа в виде цифры в ячейке G4 высчитывается дата начала недели (имеется в виду понедельник).
А функция ПРАВБ возвращает последний символ или несколько последних символов текстовой строки на основе заданного числа байтов.
Функция ПРАВСИМВ предназначена для языков с однобайтовой кодировкой, а ПРАВБ — для языков с двухбайтовой кодировкой.
Не буду спорить, что конкретно лучше. Но дорога была ложка к обеду.
Ага, ясно. ПРАВБ вместо ПРАВСИМВ тут исключительно для сокращения длины формулы - не использовал ее ни разу на практике, признаюсь
Николай! Добрый день!
А если есть некоторое количество ячеек, условным форматированием отображенных шрифтом с красным цветом, их можно как то подсчитать?
Прошу прощения, решил вопрос на форуме.
Николай, очень красивое решение с подсветкой незащищенных ячеек через «Условное форматирование»!
Беру на практику. Спасибо!
Еще в Excel есть функция с похожим интерфейсом ИНФОРМ
Максимум, что интересного она умеет (на мой взгляд):
=ИНФОРМ("ВЕРСИЯ") – какая версия Excel?
=ИНФОРМ("ПЕРЕВЫЧИСЛИТЬ") -- как происходим пересчет листа?
Определение версии очень полезный метод при разработке решений в Excel..
Например, сейчас в Excel 2016 появилось много аналитических инструментов уровня Self-Service BI (это надстройки Power (Query / Pivot / View / Map) которые не работают полностью или частично в предыдущих версиях Excel.
Предположим, что у нас есть вот такая несложная таблица, в которой подсчитываются суммы по каждому месяцу в двух городах, а затем итог переводится в евро по курсу из желтой ячейки J2.
Проблема в том, что если скопировать диапазон D2:D8 с формулами куда-нибудь в другое место на лист, то Microsoft Excel автоматически скорректирует ссылки в этих формулах, сдвинув их на новое место и перестав считать:
Задача: скопировать диапазон с формулами так, чтобы формулы не изменились и остались теми же самыми, сохранив результаты расчета.
Способ 1. Абсолютные ссылки
Как можно заметить по предыдущей картинке, Excel сдвигает только относительные ссылки. Абсолютная (со знаками $) ссылка на желтую ячейку $J$2 не сместилась. Поэтому для точного копирования формул можно временно перевести все ссылки во всех формулах в абсолютные. Нужно будет выделить каждую формулу в строке формул и нажать клавишу F4:
Способ 2. Временная деактивация формул
- Выделяем диапазон с формулами (в нашем примере D2:D8)
- Жмем Ctrl+H на клавиатуре или на вкладке Главная - Найти и выделить - Заменить (Home - Find&Select - Replace)
Способ 3. Копирование через Блокнот
Этот способ существенно быстрее и проще.
Нажмите сочетание клавиш Ctrl+Ё или кнопку Показать формулы на вкладке Формулы (Formulas - Show formulas) , чтобы включить режим проверки формул - в ячейках вместо результатов начнут отображаться формулы, по которым они посчитаны:
Скопируйте наш диапазон D2:D8 и вставьте его в стандартный Блокнот:
Теперь выделите все вставленное (Ctrl+A), скопируйте в буфер еще раз (Ctrl+C) и вставьте на лист в нужное вам место:
Осталось только отжать кнопку Показать формулы (Show Formulas) , чтобы вернуть Excel в обычный режим.
Примечание: этот способ иногда дает сбой на сложных таблицах с объединенными ячейками, но в подавляющем большинстве случаев - работает отлично.
Способ 4. Макрос
Если подобное копирование формул без сдвига ссылок вам приходится делать часто, то имеет смысл использовать для этого макрос. Нажмите сочетание клавиш Alt+F11 или кнопку Visual Basic на вкладке Разработчик (Developer) , вставьте новый модуль через меню Insert - Module и скопируйте туда текст вот такого макроса:
Для запуска макроса можно воспользоваться кнопкой Макросы на вкладке Разработчик (Developer - Macros) или сочетанием клавиш Alt+F8. После запуска макрос попросит вас выделить диапазон с исходными формулами и диапазон вставки и произведет точное копирование формул автоматически:
Читайте также: