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

网友投稿 228 2023-12-23

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

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

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

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

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

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

通过创建表在Excel中创建动态命名范围
惊人的! 在 Excel 中使用高效的选项卡,如 Chrome、Firefox 和 Safari! 每天节省50%的时间,并减少数千次鼠标单击!

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

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

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

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

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

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

笔记:

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

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

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

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

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

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

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

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

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

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

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

提示:此公式的解释:

= OFFSET(参考,行,列,[高度],[宽度]) = 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
Copy

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

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

笔记:

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

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

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

相关文章:

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

最佳办公生产力工具

将小时转化为分钟 Kutools for Excel!

准备好增强您的 Excel 任务了吗? 利用的力量 Kutools for Excel - 您终极的节省时间的工具。 简化复杂的任务并像专业人士一样浏览数据。 以闪电般的速度体验 Excel!

为什么需要 Kutools for Excel

🛠️  超过 300 项强大功能: Kutools 包含 300 多项高级功能,可简化您在 1500 多种场景中的工作。

📈  卓越的数据处理能力:合并单元格、删除重复项并执行高级数据转换 - 所有这些都不费吹灰之力!

⏱️  高效的批量操作:当你可以聪明地工作时,为什么还要付出额外的努力呢? 轻松批量导入、导出、组合和调整数据。

📊  可定制的图表和报告:访问各种附加图表并生成富有洞察力的报告。

🗄️  强大的导航窗格:通过强大的列管理器、工作表管理器和自定义收藏夹获得优势。

📝  七种类型的下拉列表:通过各种功能和类型的下拉列表使数据输入变得轻而易举。

🎓  用户友好:对于初学者来说轻而易举,对于专家来说是一个强大的工具。

立即下载,与 Excel 一起穿越时空!

阅读更多 免费下载... 采购... 
Office Tab 为 Office 带来选项卡式界面,让您的工作更轻松
Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。 每天将您的工作效率提高50%,并减少数百次鼠标单击!
阅读更多 免费下载... 采购... 

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何在Excel中创建动态交互式图表?
下一篇:如何在 Excel 中创建动态前 10 或第 n 列表?
相关文章