为表格定义dynamic范围

背景

我经常在我想要定义一个覆盖整个桌子的dynamic范围的情况下发现自己很安静。 我需要足够的灵活性,如果我添加更多的列或行或移动表,范围应该更新。

所以我所做的基本上是:

  • 命名表的左上angular单元格( start.table说)
  • 定义表格的dynamic范围如下:

      =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的整个列/行的string表示start.table
  • 我需要SUBSTITUTE $1$A部分分别获得列或行限定符
  • 然后,我可以COUNTASUBSTITUTEstring引用的INDIRECT范围内的非空单元格
  • 使用这种方法,即使我在表格之前/之后添加空行或添加列或行,表格仍保持正确定义

这种方法似乎是相当的矫枉过正,我想是否我不能简单地用$A:$A$1:$1replace整个INDIRECT(...)构造。 首先testing会证实它是有效的,但是我想知道我在这里是否可以忽略一些东西? 你有没有看到这种方法的任何潜在的问题?

这是我在名称pipe理器中用来定义dynamic表的内容:

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

这将覆盖给定工作表上的所有行和列。