2015-05-02 4 views
2

Я создал относительно сложную формулу, которая суммирует диапазон, определенный в начале и конце:Вызов формулы из ячейки ссылаются по имени

=SUMIFS(INDIRECT("Purchases!$B"&INDIRECT("B"&ROW())):INDIRECT("Purchases!$B"&INDIRECT("C"&ROW())), INDIRECT("Purchases!$I"&INDIRECT("B"&ROW())):INDIRECT("Purchases!$I"&INDIRECT("C"&ROW())), "income") 

Я определил формулу так, что если я просто скопировать/вставьте его в другие ячейки, он отлично работает.

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

Я хочу какой-то INDIRECT, который выполнил бы формулу, на которую ссылается ее выражение; что-то вроде «= CALL (sumifrange)», где sumifrange - это имя ячейки со сложной формулой.

ОБНОВЛЕНИЕ: Вот macro-enabled spreadsheet, который предпринимает попытки chthonicdaemon's solution. Это не работает - есть ошибка #REF!.

Evaluate Excel formula as string

+0

Непонятно, что именно вы хотите вернуть из именованной ячейки (диапазона). Является ли это диапазоном ячеек? Вы хотите поместить эту формулу в «TRANSPOSE» как именованный диапазон, но эта формула возвращает только одно целое число (результат функции [SUMIFS] (https://support.office.com/en-us/article/SUMIFS- function-9DD6179E-CCED-41DD-AC38-08FDF5B929E5)), поэтому транспонирование нечего. Если вы хотите определить диапазон, какой диапазон? * Sum_range * или * criteria_range1 *? – Jeeped

ответ

1

Ваша формула может быть энергонезависимым путем обмена INDIRECT function's для INDEX function и используя принципал Inferred Позиции (см моего объяснения here) для граничных номеров строк вытащили из столбцов В и С .

=SUMIFS(INDEX(Purchases!$B:$B,$B:$B):INDEX(Purchases!$B:$B,$C:$C), INDEX(Purchases!$I:$I,$B:$B ):INDEX(Purchases!$I:$I,$C:$C), "income") 

с помощью этого Inferred Позиция, вы должны быть в состоянии установить пару функций ИНДЕКС, который будет возвращать любой диапазон, который вы хотите в зависимости от т это позиция ячейки, относящаяся к ним.

Использование формул ► определенных имен ► Диспетчер имен, определить именованный диапазон (например, siIncome), который использует следующие за Обозначает:

=SUMIFS(INDEX(Purchases!$B:$B,$B:$B):INDEX(Purchases!$B:$B,$C:$C), INDEX(Purchases!$I:$I,$B:$B ):INDEX(Purchases!$I:$I,$C:$C), "income") 

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

formula as named range

В образце книги Ор, в следующую формулу войдет в 'SO 29997947' H2,

=SUMIFS(INDEX('SO 29997947'!$B:$B,$F:$F):INDEX('SO 29997947'!$B:$B,$G:$G), INDEX('SO 29997947'!$D:$D,$F:$F ):INDEX('SO 29997947'!$D:$D,$G:$G), "income") 

Относится к: для sumcateg будет та же формула ,

remote formula

Это используется в 'SO 29997947'! I2

Вот учебное пособие с рабочими версиями. call-formula-by-cell-name.xlsx

1

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

Процедура:

  1. Создайте ячейку, которая содержит вашу формулу в виде строки (так что не начать формулу с знаком равенства, просто SUMIFS(INDIRECT(...

  2. Создайте имя (скажем func), который имеет =EVALUATE($A$1) в поле «Относится к» (используйте абсолютные ссылки и выберите ячейку, где вы разместили формулу)

  3. В любой ячейке, где вам нужна форма la, подлежащих оценке, тип =func

+0

Странно ... Если вы измените формулу на, например, просто на «ROW()», она отлично работает. Возможно, что-то связано с множественными косвенностями? – chthonicdaemon

Смежные вопросы