2017-02-22 30 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部分得到公正列或行預選賽分別爲
  • 然後,我可以COUNTAINDIRECT範圍內的非空單元格由SUBSTITUTE字符串引用
  • 使用此方法,表格保持正確定義,即使我將在表格之前/之後添加空行或添加列或行

問題

這種做法似乎是相當的矯枉過正,我在想我是否不能簡單地通過$A:$A$1:$1分別替換整個INDIRECT(...)結構。首先測試會證實它的工作原理,但我想知道我在這裏是否可以忽略某些東西?你看到這種方法有什麼潛在的問題嗎?

回答

1

這是我的名經理用來定義動態表:

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

這將覆蓋所有在您給表的行和列。