Получение формулы другой ячейки в целевой ячейке - PullRequest
21 голосов
/ 03 февраля 2012

Как одна ячейка получает формулу другой ячейки в виде текста без использования VBA?Я вижу, что этот вопрос уже задавался много раз, и ответ всегда заключается в написании пользовательской функции в VBA.

Однако я нашел сообщение , сделанное в 2006 году , в котором утверждалось, что он нашел решение, не относящееся к VBA, но ссылка в этом сообщении уже не работает.

Ответы [ 5 ]

20 голосов
/ 09 мая 2014

=FormulaText(Reference) сделает свое дело Документация

16 голосов
/ 07 января 2014

Есть хороший способ сделать это без VBA.Он использует макросы XL4 (это макросы, но это не VBA, как было сказано).

Со ссылкой на рисунок 1 ячейки A2: A4 содержат обычные формулы.

enter image description here

  1. Переходя к формулам -> Определить имя, я определил два именованных диапазона (см. Рис. 2) с информацией, отображаемой в ячейках A6: B8.

    enter image description here

  2. Введите в ячейку B2 =FormulaAsText.Будет извлечена формула в ячейке A2 в виде текста.

    Объяснение : Именованный диапазон FormulaAsText использует =GET.CELL(info_type,reference).В этом случае ìnfo_type = 6 извлекает формулу, а reference = OFFSET(INDIRECT("RC",FALSE),0,-1) использует ячейку с 0 строками и смещением -1 столбца по сравнению с той, в которой используется формула.

  3. Скопируйте B2 ивставьте в B3: B4.Это покажет формулы в A3: A4.Ячейка A4 показывает, что функция рабочего листа CELL извлекает только значения, а не формулы (в отличие от GET.CELL).

  4. Поскольку FormulaAsText получает формулу из ячейки с фиксированным смещением(0, -1) из текущего, я определил другой диапазон FormulaAsText2, который использует смещение (строки, столбцы), считанное из самой таблицы.Клетки D2: D4 содержат =FormulaAsText2.Таким образом, ячейка D2 показывает содержимое ячейки B3 (=OffSET(D2,1,-2)), что составляет FormulaAsText.ячейки D3: D4 показывают содержимое самих себя.Это добавляет некоторую гибкость.YMMV.

PS1: сущность взята из http://www.mrexcel.com/forum/excel-questions/20611-info-only-get-cell-arguments.html

PS2: Тим Уильямс упомянул в комментарии «старый XLM GET.FORMULA()».Этот ответ, возможно, связан (не то же самое, так как этот использует GET.CELL()).

PS3: простое решение VBA дано, например, в http://dmcritchie.mvps.org/excel/formula.htm


РЕДАКТИРОВАТЬ : дополняя этот приятный ответ , функция рабочего листа FormulaText доступна для Excel 2013 и более поздних версий .

0 голосов
/ 27 января 2017

Это предложение может быть полезно тем, кто после извлечения блока формул и переноса их в новую электронную таблицу хочет снова заставить их работать.Функция Excels FORMULATEXT отлично подходит для выбора формул, но оставляет их в виде неиспользуемых текстовых строк.Если вы хотите вернуть их в качестве полностью функционирующих формул, вам нужно отредактировать каждую из них по отдельности, чтобы удалить символ строки, но здесь есть ярлык для больших блоков.Перейдите к позиции, где у вас есть необходимые формулы в виде текста (другими словами, после использования FORMULATEXT - вы сделали копию и (только значение) вставку).Следующий шаг включает выделение всех ячеек, которые вы хотите преобразовать, и затем переход к пункту меню [Текст в столбцы] (панель {Данные} в Excel 2016).Вы можете выбрать «С разделителями», но на следующем экране просто убедитесь, что вы отменили все отметки, которые появляются в ваших формулах.Затем «Готово».Excel должен автоматически проанализировать ячейки как содержащие формулы, и теперь они должны снова работать.

0 голосов
/ 01 июня 2016

Есть способ сделать это.В моем примере у меня была таблица с указанием даты.Дата прибывает из Листа! G91.В моей таблице также был столбец с именем листа.Я добавил еще две колонки в свою таблицу.В первом столбце был столбец (Лист! G91), который возвращает число 7, потому что G является седьмой буквой в алфавите.Затем я преобразовал число в букву (G), используя другую таблицу в своей книге.Во втором столбце, который я добавил, я создал строку формулы (Лист! G91), которая возвращает число 91. Примечание. Строка и столбец могут отображаться как изменяемые формулы, которые пересчитываются при каждом вычислении рабочей книги.

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

"=" & AJ9 & "!"& AM9 & AN9

Элементы, разделенные амперсандами, соединяются вместе (то есть соединяются).В моем примере AJ9 содержит имя листа, AM9 - букву столбца, а AN9 - номер строки.

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

= Лист! G91.

0 голосов
/ 03 февраля 2012

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

То, что вы читаете правильно, - написание UDF - это то решение, которое вам нужно.

...