Excel动态命名范围:如何创建和使用

  • Share This
Michael Brown

在本教程中,你将学习如何在Excel中创建一个动态命名的范围,以及如何在公式中使用它,让新数据自动包含在计算中。

在上周的教程中,我们研究了在Excel中定义静态命名单元格的不同方法。 静态名称总是指相同的单元格,这意味着每当你添加新数据或删除现有数据时,你必须手动更新单元格参考。

如果你正在处理一个不断变化的数据集,你可能想让你的命名范围动态化,以便它自动扩展以适应新添加的条目,或收缩以排除已删除的数据。 在本教程的后面,你会发现关于如何做到这一点的详细步骤指导。

    如何在Excel中创建一个动态的命名范围

    首先,让我们建立一个由单列和可变行数组成的动态命名范围。 要做到这一点,执行这些步骤。

    1. 关于 公式 选项卡,在 定义的名称 组,点击 定义名称 或者,按Ctrl + F3打开Excel名称管理器,然后点击 新的... 按钮。
    2. 无论是哪种方式, 新名称 对话框将打开,在这里你可以指定以下细节。
      • 命名 框中,输入动态范围的名称。
      • 范围 下拉菜单,设置名称的范围。 工作手册 (默认情况下)在大多数情况下建议使用。
      • 指的是 框,输入OFFSET COUNTA或INDEX COUNTA公式。
    3. 单击 "确定",完成!

    在下面的截图中,我们定义了一个动态的命名范围 项目 适应所有 有数据的细胞 在A列,除了标题行。

    用OFFSET公式定义Excel动态命名范围

    在Excel中制作动态命名范围的通用公式如下。

    OFFSET( 第一个单元格 , 0, 0, counta( 栏目 ), 1)

    在哪里?

    • 第一个单元格 - 指定范围内要包括的第一个项目,例如$A$2。
    • 栏目 - 一个对该列的绝对引用,如$A:$A。

    在这个公式的核心部分,你使用COUNTA函数来获得感兴趣的那一列中的非空白单元格的数量。 这个数字会直接进入到 高度 OFFSET(reference, rows, cols, [height], [width])函数的参数告诉它要返回多少行。

    除此之外,它是一个普通的偏移公式,其中。

    • 参考 是偏移量的起点(first_cell)。
    • 行数 Cols 都是0,因为没有要偏移的列或行。
    • 宽度 等于1列。

    例如,要为Sheet3中的A列建立一个动态命名的范围,从A2单元格开始,我们使用这个公式。

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

    注意:如果你在当前工作表中定义一个动态范围,你不需要在引用中包括工作表的名称,Excel会自动帮你完成。 如果你要为其他工作表建立一个范围,在单元格或范围的引用前加上工作表的名称,然后是感叹号(就像上面的公式例子)。

    在Excel中用INDEX公式制作一个动态的命名范围

    创建Excel动态范围的另一种方法是将COUNTA与INDEX函数结合使用。

    第一个单元格 :INDEX( 栏目 ,COUNTA( 栏目 ))

    这个公式由两部分组成。

    • 在范围操作符(:)的左边,你把硬编码的起始参考值,如$A$2。
    • 在右边,你使用INDEX(array, row_num, [column_num])函数来计算结束引用。 这里,你为数组提供了整个A列,并使用COUNTA来获得行号(即A列中非入口单元的数量)。

    对于我们的样本数据集(请看上面的截图),公式如下。

    =$a$2:index($a:$a, counta($a:$a))

    由于A列有5个非空白单元格,包括一列标题,COUNTA返回5。 因此,INDEX返回$A$5,这是A列中最后使用的单元格(通常Index公式返回一个值,但引用操作符迫使它返回一个引用)。 由于我们将$A$2作为起点,公式的最终结果是范围$A$2:$A$5。

    为了测试新创建的动态范围,你可以让COUNTA获取项目计数。

    =COUNTA(项目)

    如果所有操作都正确,一旦你向/从列表中添加或删除项目,公式的结果就会改变。

    注意:上面讨论的两个公式产生的结果是一样的,但是你应该注意到性能上的差异。 OFFSET是一个不稳定的函数,每次对工作表的改变都会重新计算。 在强大的现代机器和合理大小的数据集上,这不应该是一个问题。 在低容量的机器和大数据集上,这可能使你的Excel变慢。 在这种情况下,你要最好使用INDEX公式来创建一个动态命名的范围。

    如何在Excel中制作二维动态范围

    要建立一个二维的命名范围,其中不仅行的数量,而且列的数量都是动态的,使用下面对INDEX COUNTA公式的修改。

    第一个单元格 :index($1:$1048576, counta( 第一栏 ), COUNTA( 第一行 )))

    在这个公式中,你有两个COUNTA函数来获得最后的非空行和最后的非空列( 行数_num 列_num 分别是INDEX函数的参数)。 在 阵列 参数,你送入整个工作表(在Excel 2016 - 2007中为1048576行;在Excel 2003及以下版本中为65535行)。

    现在,让我们为我们的数据集再定义一个动态范围:这个范围名为 销售 包括3个月(1月至3月)的销售数字,并在你向表格添加新的项目(行)或月份(列)时自动调整。

    在B列第2行开始的销售数据中,公式的形状如下。

    =$b$2:index(1:$1048576,counta($b:$b),counta(2:2))

    为了确保你的动态范围能够正常工作,请在工作表的某个地方输入以下公式。

    =SUM(sales)

    =SUM(B2:D5)

    正如你在下面的截图中所看到的,两个公式返回的总数是一样的。 区别体现在你向表中添加新条目的时候:第一个公式(有动态命名的范围)会自动更新,而第二个公式在每次变化时都必须手动更新。 这有很大的区别,嗯?

    如何在Excel公式中使用动态命名范围

    在本教程的前几节中,你已经看到了几个使用动态范围的简单公式。 现在,让我们试着想出一些更有意义的东西,显示Excel动态命名范围的真实价值。

    在这个例子中,我们将采用经典的INDEX MATCH公式,在Excel中执行Vlookup。

    INDEX ( 返回范围 , MATCH ( 查找_值 , 查找_范围 , 0))

    ...看看我们如何通过使用动态命名范围使该公式更加强大。

    如上面的截图所示,我们试图建立一个仪表盘,用户在H1中输入一个商品名称,在H2中获得该商品的总销售额。 我们为演示目的而创建的样本表只包含4个商品,但在你现实生活中的表可能有数百甚至数千行。 此外,新商品可能每天都在增加,所以使用引用并不是一种选项,因为你必须一次又一次地更新公式。 我太懒了! :)

    为了迫使公式自动展开,我们将定义3个名称:2个动态范围和1个静态命名单元格。

    Lookup_range: =$A$2:INDEX($A:$A, COUNTA($A:$A))

    Return_range: =$E$2:INDEX($E:$E, COUNTA($E:$E))

    Lookup_value: =$H$1

    注意:Excel将把当前工作表的名称添加到所有的引用中,所以在创建名称之前,请确保打开带有源数据的工作表。

    现在,开始在H1中输入公式。 当涉及到第一个参数时,输入你想使用的名称的几个字符,Excel将显示所有可用的匹配名称。 双击适当的名称,Excel将立即在公式中插入它。

    完成后的公式看起来如下。

    =INDEX(Return_range, MATCH(Lookup_value, Lookup_range, 0))

    而且效果非常好!

    只要你向表中添加新的记录,它们就会立即被纳入你的计算中,而你不必对公式做任何改动!而且,如果你需要将公式移植到另一个Excel文件中,只需在目标工作簿中创建相同的名称,复制/粘贴公式,就能立即得到工作。

    提示:除了使公式更持久,动态范围在创建动态下拉列表时也很方便。

    这就是在Excel中创建和使用动态命名范围的方法。 要想仔细了解本教程中讨论的公式,欢迎下载我们的Excel动态命名范围工作簿样本。 感谢您的阅读,希望下周能在我们的博客上见到您!

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.