【问题标题】:Define Dynamic Range for a Table定义表格的动态范围
【发布时间】:2017-02-23 01:37:29
【问题描述】:

背景

当我想定义一个覆盖整个表格的动态范围时,我经常发现自己很安静。我想要足够的灵活性,如果我添加更多列或行或移动表格,则应该更新范围。

所以我做的基本上是:

  • 为表格左上角的单元格命名(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 部分分别获取列或行限定符
  • 然后我可以COUNTAINDIRECT 范围内的非空单元格,正如SUBSTITUTE 字符串所引用的那样
  • 使用这种方法,即使我要在表格之前/之后添加空行或添加列或行,表格也能保持正确定义

问题

这种方法似乎有点矫枉过正,我在想我是否不能简单地将整个 INDIRECT(...) 构造分别替换为 $A:$A$1:$1。第一次测试将确认它有效,但我想知道我是否在这里忽略了一些东西?您认为这种方法有什么潜在的问题吗?

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    这是我在名称管理器中用来定义动态表的:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      相关资源
      最近更新 更多