2012-02-27 10 views
0

Как я могу использовать результаты одного OFFSET() в нескольких ячейках?Избегайте дублирования вычислений OFFSET

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

Для каждой строки мне нужно вызвать несколько функций массива (SUM, AVERAGE и т. Д.) В той же ссылке массива.

Это можно сделать, вызвав OFFSET в каждом случае ... SUM (OFFSET (args)), СРЕДНЕЕ (OFFSET (args)); но я нахожу ошибки, поскольку я стараюсь, чтобы все вызовы OFFSET синхронизировались с последними определениями массива.

Есть ли способ, что я могу превратить

B1: =SUM(OFFSET(args)) 
C1: =MAX(OFFSET(args)) 

в

A1: =OFFSET(args) 
B1: =SUM(A1) 
C1: =MAX(A1) 

или эквивалент, так что я могу изменить определение ссылки в одном месте и применить его ко всем функции в строке?

+0

ли столбцы разные (или потенциально разные) для каждой строки или вы просматриваете одни и те же столбцы до конца? –

ответ

3

Читая ваш пример, мне кажется, что это идеальное время для использования именованной формулы. CTRL-F3, чтобы открыть мастер имени, создайте имя, подобное MyRange и в разделе REFERSTO: введите OFFSET() формулу, которую вы помещали в A1. Не забудьте сделать его абсолютной ссылкой.

Тогда вы должны быть в состоянии суммировать получившийся ряд, созданный с

A1: = SUM (MyRange)

B1: = MAX (MyRange)

+0

+1 простой и эффективный – brettdj

+0

Согласен. Мой ответ был слишком сложным. Это намного проще. –

+0

Попытка убедиться, что я следую этому решению - предлагаете ли вы одну формулу для каждой строки? Означает ли это масштаб решения? – VoiceOfUnreason

0

Вы можете создать свой адрес диапазона с помощью функции Address, а затем использовать Indirect для ссылки на этот диапазон. Например, в A1 предположим, что вы вводите: =ADDRESS(5,2,1,1)&":"&ADDRESS(5,3,1,1). Это даст вам адрес $ B $ 5: $ C $ 5. Теперь вы можете использовать формулу, такую ​​как =SUM(INDIRECT(A1)), чтобы получить сумму значений в этом диапазоне.

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

0

Вы можете использовать формулу, заданную формулой OFFSET, для создания правильного набора столбцов для каждой строки, начиная с согласованного столбца справа от исходной таблицы (или на другом листе, если это необходимо) и работать вправо. Затем вы можете использовать один и тот же диапазон во всех своих других формулах в ячейках B1, C1 и т. Д.

Если вам иногда нужно выбирать разные номера столбцов, вам нужно будет добавить некоторые ошибки для предотвращения возможных ошибок # N/A от загрязнения ваших расчетов. Это можно сделать через IF в сочетании с ISERROR или ERROR.TYPE.

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