为表格定义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
部分分别获得列或行限定符 - 然后,我可以
COUNTA
在SUBSTITUTE
string引用的INDIRECT
范围内的非空单元格 - 使用这种方法,即使我在表格之前/之后添加空行或添加列或行,表格仍保持正确定义
题
这种方法似乎是相当的矫枉过正,我想是否我不能简单地用$A:$A
和$1:$1
replace整个INDIRECT(...)
构造。 首先testing会证实它是有效的,但是我想知道我在这里是否可以忽略一些东西? 你有没有看到这种方法的任何潜在的问题?
这是我在名称pipe理器中用来定义dynamic表的内容:
=OFFSET(SheetName!$A$1,0,0,COUNTA(SheetName!$A:$A),COUNTA(SheetName!$1:$1))
这将覆盖给定工作表上的所有行和列。