跳到主要内容

如何在Excel中创建动态命名范围?

通常情况下, 命名范围 对于Excel用户非常有用,您可以在列中定义一系列值,为该列命名,然后可以通过名称而不是其单元格引用来引用该范围。 但是大多数时候,您需要添加新数据以扩展将来引用范围的数据值。 在这种情况下,您必须返回 公式 > 名称管理员 并重新定义范围以包括新值。 为避免这种情况,您可以创建一个动态的命名范围,这意味着在每次向列表中添加新的行或列时都不需要调整单元格引用。

通过创建表在Excel中创建动态命名范围

使用功能在Excel中创建动态命名范围

使用VBA代码在Excel中创建动态命名范围


箭头蓝色右气泡 通过创建表在Excel中创建动态命名范围

如果使用的是Excel 2007或更高版本,则创建动态命名范围的最简单方法是创建命名Excel表。

假设您有一系列跟随数据,这些数据需要变为动态命名范围。

文档动态范围1

1。 首先,我将为此范围定义范围名称。 选择范围A1:A6并输入名称 日期名称框,然后按 输入 键。 以相同的方式将范围B1:B6的名称定义为Saleprice。 同时,我创建一个公式 =总和(促销价) 在空白单元格中,请参见屏幕截图:

文档动态范围2

2。 选择范围并单击 插页 > ,请参见屏幕截图:

文档动态范围3

3。 在 创建表 提示框,选中 我的桌子有标题 (如果该范围没有标题,请取消选中它),然后单击 OK 按钮,范围数据已转换为表格。 查看屏幕截图:

文档动态范围4 -2 文档动态范围5

4。 并且,当您在数据后输入新值时,命名范围将自动调整,并且创建的公式也将更改。 请参阅以下屏幕截图:

文档动态范围6 -2 文档动态范围7

笔记:

1.您输入的新数据必须与上述数据相邻,这意味着新数据与现有数据之间没有空白行或列。

2.在表中,您可以在现有值之间插入数据。


箭头蓝色右气泡 使用功能在Excel中创建动态命名范围

在Excel 2003或更早版本中,第一种方法将不可用,因此这是您的另一种方法。 以下 偏移量() 函数可以帮到您,但这有点麻烦。 假设我有一个数据范围,其中包含我定义的范围名称,例如, A1:A6 范围名称是 日期B1:B6 范围名称是 销售价格,同时,我为 销售价格。 看截图:

文档动态范围2

您可以通过以下步骤将范围名称更改为动态范围名称:

1。 点击 公式 > 名称管理员,请参见屏幕截图:

文档动态范围8

2。 在 名称管理员 对话框中,选择要使用的项目,然后单击 编辑 按钮。

文档动态范围9

3。 在弹出 编辑名称 对话框中,输入此公式 = OFFSET(Sheet1!$ A $ 1、0、0,COUNTA($ A:$ A),1) 文本框,请参见屏幕截图:

文档动态范围10

4。 然后点击 OK,然后重复步骤2和步骤3以复制此公式 = OFFSET(Sheet1!$ B $ 1、0、0,COUNTA($ B:$ B),1)进入 的文本框 销售价格 范围名称。

5。 动态命名范围已创建。 当您在数据后输入新值时,命名范围将自动调整,并且创建的公式也将更改。 查看屏幕截图:

文档动态范围6 -2 文档动态范围7

请注意: 如果范围的中间有空白单元格,则公式的结果将是错误的。 那是因为不计入非空白单元格,因此您的范围将比其应有的短,并且该范围中的最后一个单元格将被保留。

提示:此公式的解释:

  • = OFFSET(参考,行,列,[高度],[宽度])
  • -1
  • = OFFSET(Sheet1!$ A $ 1、0、0,COUNTA($ A:$ A),1)
  • 参考 对应于起始单元格位置,在此示例中 Sheet1!$ A $ 1;
  • 表示要相对于起始单元格向下移动的行数(如果使用负值,则向上移动),在此示例中,0表示列表将从第一行开始
  • 对应于您将相对于起始单元格向右移动的列数(或使用负值向左移动)。在以上示例公式中,0表示向右扩展0列。
  • [高度] 对应于从调整位置开始的范围的高度(或行数)。 $ A:$ A,它将计算在A列中输入的所有项目。
  • [宽度] 对应于从调整位置开始的范围的宽度(或列数)。 在上面的公式中,列表将为1列宽。

您可以根据需要更改这些参数。


箭头蓝色右气泡 使用VBA代码在Excel中创建动态命名范围

如果您有多列,则可以重复并为其余所有列输入单独的公式,但这将是一个漫长的重复过程。 为了使事情变得简单,可以使用代码自动创建动态命名范围。

1。 激活您的工作表。

2。 按住 ALT + F11 键,然后打开 Microsoft Visual Basic for Applications窗口.

3。 点击 插页 > 模块,然后将以下代码粘贴到 模块窗口.

VBA代码:创建动态命名范围

Sub CreateNamesxx()
'Update 20131128
Dim wb As Workbook, ws As Worksheet
Dim lrow As Long, lcol As Long, i As Long
Dim myName As String, Start As String
Const Rowno = 1
Const Colno = 1
Const Offset = 1
On Error Resume Next
Set wb = ActiveWorkbook
Set ws = ActiveSheet
lcol = ws.Cells(Rowno, 1).End(xlToRight).Column
lrow = ws.Cells(Rows.Count, Colno).End(xlUp).Row
Start = Cells(Rowno, Colno).Address
wb.Names.Add Name:="lcol", RefersTo:="=COUNTA($" & Rowno & ":$" & Rowno & ")"
wb.Names.Add Name:="lrow", RefersToR1C1:="=COUNTA(C" & Colno & ")"
wb.Names.Add Name:="myData", RefersTo:="=" & Start & ":INDEX($1:$65536," & "lrow," & "Lcol)"
For i = Colno To lcol
    myName = Replace(Cells(Rowno, i).Value, " ", "_")
    If myName <> "" Then
        wb.Names.Add Name:=myName, RefersToR1C1:="=R" & Rowno + Offset & "C" & i & ":INDEX(C" & i & ",lrow)"
    End If
Next
End Sub

4。 然后按 F5 键来运行代码,然后将生成一些动态命名范围,这些范围以第一行值命名,并且还会创建一个动态范围,称为 我的数据 它涵盖了整个数据。

5。 在行或列之后输入新值时,范围也会扩大。 查看屏幕截图:

文档动态范围12
-1
文档动态范围13

笔记:

1.使用此代码,范围名称不会显示在 名称框,为了方便查看和使用范围名称,我已经安装了 Kutools for Excel,其 导航窗格,列出了创建的动态范围名称。

2.使用此代码,可以垂直或水平扩展整个数据范围,但要记住,输入新值时,数据之间不应有空白行或列。

3.使用此代码时,数据范围应从单元格A1开始。


相关文章:

在Excel中输入新数据后如何自动更新图表?

最佳办公生产力工具

热门特色: 查找、突出显示或识别重复项   |  删除空白行   |  合并列或单元格而不丢失数据   |   不使用公式进行四舍五入 ...
超级查询: 多条件VLookup    多值VLookup  |   跨多个工作表的 VLookup   |   模糊查询 ....
高级下拉列表: 快速创建下拉列表   |  依赖下拉列表   |  多选下拉列表 ....
列管理器: 添加特定数量的列  |  移动列  |  切换隐藏列的可见性状态  |  比较范围和列 ...
特色功能: 网格焦点   |  设计图   |   大方程式酒吧    工作簿和工作表管理器   |  资源库 (自动文本)   |  日期选择器   |  合并工作表   |  加密/解密单元格    按列表发送电子邮件   |  超级筛选   |   特殊过滤器 (过滤粗体/斜体/删除线...)...
前 15 个工具集12 文本 工具 (添加文本, 删除字符,...)   |   50+ 图表 类型 (甘特图,...)   |   40+ 实用 公式 (根据生日计算年龄,...)   |   19 插入 工具 (插入二维码, 从路径插入图片,...)   |   12 转化 工具 (小写金额转大写, 货币兑换,...)   |   7 合并与拆分 工具 (高级组合行, 分裂细胞,...)   |   ... 和更多

使用 Kutools for Excel 增强您的 Excel 技能,体验前所未有的效率。 Kutools for Excel 提供了 300 多种高级功能来提高生产力并节省时间。  单击此处获取您最需要的功能...

kte选项卡201905


Office Tab 为 Office 带来选项卡式界面,让您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
Comments (4)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
really, really not helpful
This comment was minimized by the moderator on the site
please help i am trying to create a dynamic named range on excel 2016 typing "=offset(DATAENTRY!$B$6,,,counta(DATAENTRY!$B$6:$B$13))" but still it gives me an error saying it is not a formula.
This comment was minimized by the moderator on the site
You are a very good teacher: 1) step-by-step approach; 2) you do not bore the student with obvious material or conclusions; 3) yet you include all necessary material. I look forward to more tutorials from you.
This comment was minimized by the moderator on the site
Thanks for good article
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations