Как и вышеприведенное решение, вы также можете попробовать формулу массива. Однако это потребует от вас функции MAX на каждом листе (предпочтительно в одной ячейке на каждом листе). Например, на листе «1» у вас есть MAX (B2: C2) в ячейке D1, а затем на листе «2», лист «3» и т. Д. Затем на сводном листе используйте формулу массива:
=MAX(N(INDIRECT(ADDRESS(1,4,,,ROW(INDIRECT("A1:A"&last_sheet))))))
Тогда не забудьте ударить Ctrl + SHIFT + введите, чтобы ввести его в качестве формулы массива.
Предполагается, что «last_sheet» представляет собой некоторое целочисленное значение, например 6, а затем создает строку диапазона («A1: A6»), передает это значение INDIRECT, которое передает его в ROW(), давая вам массив из 1 : 6. Этот массив используется как список имен листов для ADDRESS, который создает массив ссылок в ячейке D1 на каждом из шести листов. Массив передается INDIRECT, который возвращает #VALUE! до тех пор, пока вы не передадите массив ошибок N(). Наконец, max возвращает наибольшее значение в массиве. Вы можете использовать «Evaluate Formula», чтобы увидеть, как он сломается шаг за шагом, но, надеюсь, это хорошая отправная точка для вас!
спасибо. Однако вся причина использования INDIRECT заключается в том, что количество листов, на которые нужно смотреть, будет расти, и я хотел бы посмотреть на диапазон, конец которого указан «last_sheet» и будет меняться ежедневно. – rainrunner
Может ли пользовательская функция использовать? Сделать это в VBA не составит труда. – nwhaught