背景
在我想要定义覆盖整个桌子的动态范围的情况下,我经常发现自己很安静。我想要足够的灵活性,如果我添加更多的列或行或移动表,应该更新范围。
所以我的工作基本上是:
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
字符串1}}引用的SUBSTITUTE
范围内的非空单元格
问题
这种方法似乎过于矫枉过正,我在想是否不能简单地分别用INDIRECT(...)
和$A:$A
替换整个$1:$1
构造。第一次测试会证实它有效,但我想知道我是否在这里忽略了什么?你觉得这种方法有什么潜在的问题吗?
答案 0 :(得分:1)
这是我在名称管理器中用来定义动态表的方法:
=OFFSET(SheetName!$A$1,0,0,COUNTA(SheetName!$A:$A),COUNTA(SheetName!$1:$1))
这将涵盖您给定工作表上的所有行和列。