Избегайте дублирования расчетов OFFSET - PullRequest
1 голос
/ 27 февраля 2012

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

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

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

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

Есть ли способ, которым я могу повернуть

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

в

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

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

Ответы [ 3 ]

4 голосов
/ 28 февраля 2012

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

Тогда вы сможете суммировать результирующий диапазон, который вы создали с

A1: = СУММА (MyRange)

B1: = MAX (MyRange)

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

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

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

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

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

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

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