
Общая формула
=OFFSET(origin,0,0,COUNTA(range),COUNTA(range))
Резюме
Один из способов создать динамический именованный диапазон с формулой - использовать функцию СМЕЩЕНИЕ вместе с функцией СЧЁТ. Динамические диапазоны также известны как расширяющиеся диапазоны - они автоматически расширяются и сужаются для размещения новых или удаленных данных.
Примечание. СМЕЩЕНИЕ - это непостоянная функция, что означает, что она пересчитывается при каждом изменении рабочего листа. На современной машине и меньшем наборе данных это не должно вызывать проблем, но вы можете увидеть более низкую производительность на больших наборах данных. В этом случае рассмотрите возможность создания динамического именованного диапазона с помощью функции ИНДЕКС.
В показанном примере формула для динамического диапазона:
=OFFSET(B5,0,0,COUNTA($B$5:$B$100),COUNTA($B$4:$Z$4))
Объяснение
Эта формула использует функцию СМЕЩЕНИЕ для создания диапазона, который расширяется и сжимается, регулируя высоту и ширину на основе количества непустых ячеек.
Первый аргумент в OFFSET представляет первую ячейку данных (источник), которой в данном случае является ячейка B5. Следующие два аргумента представляют собой смещения для строк и столбцов, и их значение равно нулю.
Последние два аргумента представляют высоту и ширину. Высота и ширина генерируются на лету с помощью COUNTA, что делает результирующую ссылку динамической.
Для высоты мы используем функцию COUNTA для подсчета непустых значений в диапазоне B5: B100. Это предполагает отсутствие пустых значений в данных и значений, превышающих B100. COUNTA возвращает 6.
Для ширины мы используем функцию COUNTA для подсчета непустых значений в диапазоне B5: Z5. Это предполагает отсутствие ячеек заголовков и заголовков за пределами Z5. COUNTA возвращает 6.
На данный момент формула выглядит так:
=OFFSET(B5,0,0,6,6)
С этой информацией OFFSET возвращает ссылку на B5: G10, что соответствует диапазону высотой 6 строк и шириной 6 столбцов.
Примечание. Диапазоны, используемые для высоты и ширины, должны быть скорректированы в соответствии с макетом рабочего листа.
Вариант с полными ссылками на столбец / строку
Вы также можете использовать полные ссылки на столбцы и строки для высоты и ширины, например:
=OFFSET($B$5,0,0,COUNTA($B:$B)-2,COUNTA($4:$4))
Обратите внимание, что высота регулируется с помощью -2, чтобы учесть значения заголовка и заголовка в ячейках B4 и B2. Преимущество этого подхода - простота диапазонов внутри COUNTA. Недостаток заключается в огромном размере полных столбцов и строк - необходимо соблюдать осторожность, чтобы не допустить ошибочных значений за пределами диапазона, поскольку они могут легко сбить счет.
Определение последней строки
Есть несколько способов определить последнюю строку (последнее относительное положение) в наборе данных, в зависимости от структуры и содержания данных на листе:
- Последняя строка в смешанных данных с пробелами
- Последняя строка в смешанных данных без пробелов
- Последняя строка в текстовых данных
- Последняя строка в числовых данных