Мне нужно получить MAX диапазона, связанного двумя 1s в столбце помощника.Сложная формула с использованием КОСВЕННЫХ, АДРЕСОВ И МАТЧА - есть ли лучший способ?
1s - это переменное количество рядов.
В качестве примера, вот пример того, что я говорю:
1 0 -1.10% 0 0.00% 1 0 1.43% 0 1.15% 0 2.12% 0 2.69% 0 1.32% 0 0.86% 0 -0.69% 1 ~ [and so on]
Так, например, есть два диапазона видно, что я заинтересован в здесь - диапазон между строки 1 и 4 и диапазон между строками 4 и 12.
В третьей колонке, где есть 1 в вспомогательной колонке, я хочу МАКС. диапазонов.
Мне удалось собрать эту формулу, которая выполняет задание (это скопировано непосредственно из электронной таблицы, так что оно находится в строке 122, а данные в настоящее время идут в строку 16120, вспомогательный столбец - столбец E и столбец с значения является F):
=IF(E122=1,MAX(F122:INDIRECT(ADDRESS(ROW()+MATCH(1,E123:$E$16120,0),COLUMN(F122),4))),"")
Моя основная мысль заключается в создании в нижней части диапазона, глядя на следующий 1 вниз колонке хелперов (с использованием MATCH), добавить, что в текущей строке (с использованием полосы отвода и COLUMN), завернутый в функцию ADDRESS, а затем связать все вместе, используя INDIRECT. Наконец, он сидит внутри IF, чтобы поражать строки только 1 в вспомогательной колонке.
Может ли кто-нибудь подумать о более элегантном, менее громоздком способе?
Заранее спасибо.
+1! Хороший ответ! Я знаю, что 'OFFSET' нестабилен и думал об использовании' INDEX', но я не знаю об трюке 'MAX (F123: INDEX (..))'. Спасибо, что неожиданно научили меня! –
Ничего себе - еще лучше. Спасибо всем. Я знал, что должен быть оптимальный путь по сравнению с моим сумасшедшим решением. – EndlessLoop
@simoco: В течение многих лет я также использовал OFFSET во многих ситуациях. Потребовалось некоторое время, чтобы понять, что ':' на самом деле является оператором, и можно заменить почти любой 'OFFSET' на' INDEX (...): INDEX (...) '. –