Я знаю, что в Excel можно переключаться междуотображение значений и отображение формулМне необходимо сдать задания по статистике в виде распечатанного листа Excel, показывающегообаформула и результат. Сейчас инструктор заставляет нас либо копировать формулу и вставлять ее как текст рядом с вычисленным значением, либо копировать значение и вставлять его рядом с формулой. Это очень неэффективно, подвержено ошибкам (если вы измените формулу или значения после копирования-вставки) и, как правило, является пустой тратой времени.
Есть ли способ заставить Excel показать формулу?иего значение в той же ячейке? Если нет, есть ли функция, которая отобразит формулу из указанной ячейки как обычный текст, например, =showformula(A1)
которая выведет =sum(A2:A5)
вместо 25
(если бы это были формула и значение ячейки A1
)?
Я использую Excel 2010, но было бы неплохо получить общий ответ, который подойдет для любой последней версии Excel.
решение1
Я не знаю о каких-либо встроенных функциях для этого. Однако вы можете создать пользовательскую функцию VB, чтобы выполнить то, что вам нужно.
НажиматьАльт+Ф11Чтобы открыть редактор VBA, щелкните правой кнопкой мыши в обозревателе проектов и выберитеВставлять->Модуль. Вставьте следующий код:
Function GetFormula(cell)
GetFormula = cell.Formula
End Function
Теперь вы можете использовать =GetFormula(A1)
, чтобы отобразить формулу этой ячейки.
решение2
Стоит отметить, что в Excel 2013 для этого есть встроенная функция: FORMULATEXT
.
Из статьи support dot office dot com о FORMULATEXT
функции:
Описание
Возвращает формулу в виде строки.
Синтаксис
ФОРМУЛАТЕКСТ(ссылка)
Синтаксис функции FORMULATEXT имеет следующие аргументы:
- Ссылка Обязательно. Ссылка на ячейку или диапазон ячеек.
Замечания
- Функция FORMULATEXT возвращает то, что отображается в строке формул, если выбрана указанная ячейка.
решение3
Вот способ автоматизировать то, что вы делали раньше. Он сочетает в себе лучшие частиОтвет LonelyKnight на его/ее собственный вопрос, ответ Индрека и ответ Биллиса:
Sub Show_Formulas()
Dim rng As Range, cell As Range
row_offset = 10
col_offset = 0
Set rng = Range(Cells(1, 1), Cells(5, 7))
On Error GoTo ErrHandler
For Each cell In rng
cell.Offset(row_offset, col_offset) = "'" & cell.Formula
Next cell
Exit Sub
ErrHandler:
MsgBox "The cow jumped over the moon", , "Error!", Err.HelpFile, Err.HelpContext
End Sub
Для каждой ячейки в указанном диапазоне (здесь жестко закодированном как A1:G5
) он копирует формулу ячейки, защищенную апострофом, в ячейку с фиксированным смещением. (См.Как добавить VBA в MS Office?
(для получения руководства по использованию VBA в Excel.) Вам просто нужно не забыть запустить этот макрос перед печатью.
Или добавьте PrintOut , , , True
оператор непосредственно перед Exit Sub
, и этот макрос распечатает лист для вас. (Вам просто нужно не забыть напечататьиспользуя этот макрос.) Четвертый параметр — PrintOut
этоПредварительный просмотр, установите значение, True
чтобы Microsoft Excel вызывал предварительный просмотр перед печатью листа (что дает вам возможность отменить операцию) или False
(или опустите) для немедленной печати листа без каких-либо условий.
Или, если вы действительно беспокоитесь о том, что забудете запустить это, вы можете использовать Private Sub Worksheet_Change
для обновления отображаемых формул в любое время, когда вы делаетелюбойизменение в рабочем листе.
решение4
Бесплатная надстройка,ФормулаDeskможет сделать это за вас, а также отобразить формулу в более понятном виде и выявить ошибки в формуле.
Как вы можете видеть на снимке экрана ниже, вы можете одновременно просматривать конечный результат ячейки, исходную формулу и расширенное отображение формулы, как вы и просили.
[Раскрытие информации: я являюсь автором FormulaDesk]