Excel中的variables命名范围

我有一个Excel格式如下表格:

Date Asset Return 1/3/2005 0.003582399 1/4/2005 -0.01908258 1/5/2005 0.002080625 1/6/2005 0.005699497 1/7/2005 -0.008040505 1/10/2005 -0.00339116 1/11/2005 -0.009715187 1/12/2005 0.002371855 1/13/2005 -0.00580783 1/14/2005 0.001058481 1/18/2005 0.015483842 1/19/2005 -0.014690715 1/20/2005 -0.015714799 1/21/2005 -0.010796326 

我需要一个命名范围来引用每一列。 工作簿是一个模板,所以命名范围将不总是覆盖相同数量的行取决于数据。 我想设置它,以便命名范围“Date”和命名范围“资产返回”自动resize,以覆盖从第一个值到最后一个值的整个列,而不会超过列中的最后一个值。

它始终始于单元格B8,但可能会根据数据的大小以不同的行结束。

我如何设置一个dynamic的命名范围来完成这个?

这个命名的范围公式将做到这一点:

 =Sheet1!$B$8:INDEX(Sheet1!$B:$B,COUNTA(Sheet1!$B:$B)+8) 

请记住添加表单名称,否则命名范围将在活动表单上进行操作。

公式开始以B8为起点: Sheet1!$B$8
然后计算B列中有多less个单元格不为空: COUNTA(Sheet1!$B:$B)
它增加了8的计数(假设你的第一行是空白的)。
然后它使用INDEXCOUNTA来引用最后一个单元格。

https://support.office.com/en-gb/article/INDEX-function-a5dcf0dd-996d-40a4-a822-b56b061328bd
https://support.office.com/en-gb/article/COUNTA-function-7dc98875-d5c1-46f1-9a82-53f3219e2509

试试这个VBA代码

 Sub test() application.DisplayAlerts = false Range("B8").currentregion.createnames _ top:true, right:=false, left:=false, bottom:=false application.DisplayAlerts = true end sub