Excel - лист как функция - PullRequest
       8

Excel - лист как функция

1 голос
/ 04 октября 2011

У меня есть два листа Excel.Первый содержит формулу для расчета с одной входной ячейкой (A1) и одной выходной ячейкой (B1).Формула для B1 может быть B1 = A1 * 3 (пример).

Второй лист содержит различные значения в столбце A: A1 = 4;A2 = 9;A3 = 5 ... В соответствующем столбце B этого листа я хотел бы получить результат B1 (первый лист) = A1 (второй лист) * 3 для каждого входного значения A (второй лист).

По сути, я хотел бы обработать первый лист как функцию, где A1 - аргумент, а B1 - результат, который передается обратно в столбец B второго листа.1009 *

A1 4      B1 12 (result from sheet 1)  
A2 9      B2 27 (result from sheet 1)

...

Возможно ли это без макросов?

Ответы [ 4 ]

1 голос
/ 04 октября 2011

Я так не думаю ..... Если в B1 Sheet1 у вас есть 3*A1

Если вы попробуете это в Sheet2 B1

`=SUBSTITUTE(Sheet1!$B$1,"A1",A1)`

это даст 3*4, а Sheet2 B2 будет 3*9 и т.д.

Но я не понимаю, как вы могли бы привести это к числовому вычислению с помощью формул без, возможно, некоторого синтаксического разбора строки формулы с большой нагрузкой, чтобы отделить числа от операторов (что нежелательно сгибать по желанию, если вы измените запись в листе B1 1 )

[Обновление 2: но я сделал это с именованным диапазоном]

Я использовал это имя диапазона

RngTest

=EVALUATE(3*INDIRECT("rc[-1]",FALSE))

Это глобальное имя диапазона, поэтому оно будет работать на любом листе , более мощное, чем мои предыдущие усилия по СМЕЩЕНИЮ. Умножает ячейку влево до 3

поэтому введите = RngTest в B1: B3 (а затем и в этом новом примере C1: C3) дает вывод, который вы хотите enter image description here

1 голос
/ 04 октября 2011

Это встроено в Excel. В версии 2003 используйте меню «Данные, таблица».
Вы можете найти много примеров в сети. Вот один .
Вы можете создавать такие таблицы с 1 или 2 записями (параметрами).

0 голосов
/ 04 октября 2011

Совершенно без VBA: ожидайте много боли, я не пойду туда.Но ...

Чтобы существенно уменьшить количество боли, вы могли бы фактически использовать эту крошечную пользовательскую функцию VBA (технически не "макрос"), в основном просто оболочку для выполнения функции Evaluate VBA.доступно в формулах листа:

Function eval(myFormula As String)
    eval = Application.Evaluate(myFormula)
End Function

Затем вы можете использовать его в ячейке B1 на листе 2 следующим образом:

=eval(SUBSTITUTE(Sheet1!$B$1,"A1","A"&ROW()))

Обратите внимание, что для этого требуется, чтобы ячейка B1 листа 1 содержала A1*3а не =A1*3, т.е. нет знака равенства.Может быть, с немного большим беспокойством, его можно заставить работать даже со знаком = там ...

РЕДАКТИРОВАТЬ: На самом деле, если вы отформатируете ячейку Листа 1 B1 как текст, прежде чем вводить в формулу, это будетработать, даже если ваша формула начинается с =.

0 голосов
/ 04 октября 2011

Я думаю, что вы хотите использовать это в вашем столбце два листа.

Sheet1!B1 * Sheet2!A1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...