我在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
我需要一个命名范围来引用每一列。工作簿是一个模板,因此命名范围不会始终覆盖相同的行数,具体取决于数据。我想设置它以便命名范围"日期"和指定的范围"资产回报"自动调整大小以覆盖从第一个值到最后一个值的整个列,而不超过列中的最后一个值。
它始终从单元格B8开始,但可能会根据数据的大小结束于不同的行。
如何设置动态命名范围来完成此操作?
答案 0 :(得分:3)
此命名范围公式将执行此操作:
=Sheet1!$B$8:INDEX(Sheet1!$B:$B,COUNTA(Sheet1!$B:$B)+8)
请记住添加工作表名称,否则命名范围将在活动工作表上运行。
公式开始以B8为起点:Sheet1!$B$8
然后计算B列中有多少单元格不为空:COUNTA(Sheet1!$B:$B)
它会增加8个计数(假设你的第一行是空白的)
然后,它使用INDEX
和COUNTA
来引用最后一个单元格。
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
答案 1 :(得分:1)
试试这个VBA代码
Sub test()
application.DisplayAlerts = false
Range("B8").currentregion.createnames _
top:true, right:=false, left:=false, bottom:=false
application.DisplayAlerts = true
end sub