Может ли Excel показать формулу и ее результат одновременно?


9

Я знаю, что в Excel можно переключаться между отображение значений и отображение формул , Мне нужно сдать задания для класса статистики в виде печатного листа Excel и то и другое формула и результат. Прямо сейчас инструктор заставляет нас либо скопировать формулу и вставить ее в виде текста рядом с вычисленным значением, либо скопировать значение и вставить его рядом с формулой. Это очень неэффективно, подвержено ошибкам (если вы изменяете формулу или значения после выполнения копирования-вставки) и, как правило, трата времени.

Есть ли способ, чтобы Excel показал формулу а также его значение в той же ячейке? Если нет, существует ли какая-либо функция, которая будет отображать формулу из указанной ячейки в виде простого текста, например, =showformula(A1) который распечатал бы =sum(A2:A5) вместо 25 (если бы это были формула и значение ячейки A1 )?

Я использую Excel 2010, но общий ответ, который подходит для любого недавнего выпуска Excel, был бы неплох.

Ответы:


17

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

Нажмите Alt + F11 чтобы открыть редактор VBA, щелкните правой кнопкой мыши в Project Explorer и выберите Вставить - & GT; модуль , Вставьте следующий код:

Function GetFormula(cell)  
  GetFormula = cell.Formula  
End Function

Теперь вы можете использовать =GetFormula(A1) чтобы показать формулу этой клетки.


Я использовал эту процедуру - я получаю ошибку Переменная не определена Каким должно быть объявление переменной для getformula?
Prasanna

@Prasanna GetFormula это не переменная, это функция. Какую версию Excel вы используете?
Indrek

Excel 2013. Извините за мое невежество - я начал изучать VBA
Prasanna


1

Вот способ автоматизировать то, что вы делали раньше. Он сочетает в себе лучшие части Ответ 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 обновить отображаемые формулы в любое время вы делаете любой изменить на листе.


0

Бесплатная надстройка, FormulaDesk может сделать это для вас, а также отобразить формулу в более понятном виде и точно определить ошибки в формуле.

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

[Раскрытие: я автор FormulaDesk]

enter image description here


Спасибо за раскрытие вашей принадлежности. Похоже, у вас есть предыдущий вклад на Stack Exchange, и это здорово, но я бы посоветовал перечитать политика саморекламы просто чтобы быть в безопасности. Вы не сделали ничего плохого, но часто, когда пользователи видят кого-то, чьи единственные ответы на сайте рекламируют то, что они сделали, они отмечают это как спам. Это также улучшило бы этот ответ, если бы вы могли включить скриншот в качестве примера. Спасибо!
nhinkle

Спасибо, что указали мне на это. Я отредактировал свой ответ, чтобы точно ответить на ваш оригинальный вопрос.
Gareth Hayter

-1

Вы можете создать дополнительный столбец, содержащий формулы: = REPLACE (target_cell; 1; 1; "")


Не работает для меня
tohuwawohu

-1

Вот решение:

  1. Поставить апостроф ( ' ) в начале формулы
  2. Скопируйте его в строку ниже или столбец рядом с ним
  3. Вернитесь к исходной формуле и удалите апостроф

Это работает.


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

-2

Объединить текст со значением Предположим, ячейка A1 содержит номер 9999

="Total: "&TEXT(A1,"$#,##0.00")

Эта формула будет отображать «Итого: 9 999,00 $»

Другой пример, который использует функцию NOW для отображения текста с текущей датой / временем

="Report printed on: "&TEXT(NOW(),"mmmm d, yyyy at h:mm AM/PM")

1
Если я не понимаю вас, это не имеет никакого отношения к тому, что я прошу.
nhinkle
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.