2017-02-22 14 views
0

фонОпределить динамический диапазон для таблицы

Я считаю себя тихо, часто в ситуации, когда я хочу, чтобы определить динамический диапазон, охватывающий всю таблицу. Я хочу достаточно гибкости в том смысле, что, если я добавлю больше столбцов или строк или перемещу таблицу, диапазон должен быть обновлен.

Так что я в основном:

  • Имя левой верхней ячейки таблицы (start.table говорят)
  • Определить динамический диапазон таблицы следующим образом:

    =OFFSET(start.table;0;0; 
          COUNTA(INDIRECT(
           SUBSTITUTE(ADDRESS(ROW(start.table);1);"$1";"") & ":" & 
           SUBSTITUTE(ADDRESS(ROW(start.table);1);"$1";""))); 
          COUNTA(INDIRECT(
           SUBSTITUTE(ADDRESS(1;COLUMN(start.table));"$A";"") & ":" & 
           SUBSTITUTE(ADDRESS(1;COLUMN(start.table));"$A";"")))) 
    

Пояснение

  • ADDRESS дает мне строковое представление всего столбца/строки ячейки start.table
  • Мне нужно SUBSTITUTE$1 и $A части, чтобы получить только колонки или строки спецификатор соответственно
  • Тогда я могу COUNTA непустые ячейки в диапазоне INDIRECT, как указано в строке SUBSTITUTE
  • При таком подходе таблица остается корректной, даже если я добавляю пустые строки до/после таблицы или добавляю столбцы или строки

Вопрос

Такой подход представляется вполне на массовое убийство, и я думал ли я не мог просто заменить всю конструкцию INDIRECT(...) по $A:$A и $1:$1 соответственно. Первый тест подтвердит, что он работает, но мне было интересно, не вижу ли здесь что-то здесь? Вы видите какие-то потенциальные проблемы с этим подходом?

ответ

1

Это то, что я использую в менеджере имен, чтобы определить динамическую таблицу:

=OFFSET(SheetName!$A$1,0,0,COUNTA(SheetName!$A:$A),COUNTA(SheetName!$1:$1)) 

Это будет охватывать все строки и столбцы на вашем данном листе.

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