Excel中合并两个不同工作表的命名区域——不使用VBA
当然可以不用VBA实现这个需求!我给你分两种场景来讲解,你可以根据自己的实际需要选择:
方法1:创建包含两个原区域的联合命名区域(不连续)
这种方法会直接把两个独立的命名区域合并成一个“主命名区域”,它本质是两个不连续区域的集合,适合不需要连续单元格,只是想在公式里统一引用两个区域的场景:
- 按
Ctrl+F3打开名称管理器(或者点击「公式」选项卡下的「名称管理器」按钮) - 点击「新建」,在「名称」框里输入你想要的主区域名称(比如
MainIDRange) - 在「引用位置」输入框中,输入两个命名区域的联合表达式,格式是:
=第一个命名区域,第二个命名区域
举个例子,如果你的两个命名区域分别是Report1!IDList和Report2!IDList,就输入:=Report1!IDList,Report2!IDList - 点击「确定」完成创建。之后你在公式里引用
MainIDRange,就会同时包含两个原区域的所有单元格。
方法2:合并为连续的单元格区域并命名(适合需要连续ID列的场景)
如果你希望把两个区域的ID合并成一列连续的单元格,再做成命名区域,可以分两种情况处理:
针对Excel 365/2021(支持动态数组)
这是最简洁的方式,动态数组会自动溢出所有内容:
- 找一个空白工作表(比如新建Sheet3),在第一个空白单元格(比如A1)输入公式:
=VSTACK(第一个命名区域,第二个命名区域)
输入后按回车,公式会自动把两个区域的ID全部合并到A列的连续单元格中 - 选中这个自动溢出的区域(或者直接点击A1),打开名称管理器新建名称,「引用位置」可以直接填
=Sheet3!$A#($A#表示动态跟踪A列的溢出区域),或者直接在顶部的名称框里输入主区域名称回车即可。
针对旧版Excel(不支持动态数组)
可以用INDEX+ROW组合公式手动生成连续区域,再做成动态命名区域:
- 在空白工作表的A1单元格输入公式:
=IF(ROW()<=COUNTA(第一个命名区域),INDEX(第一个命名区域,ROW()),INDEX(第二个命名区域,ROW()-COUNTA(第一个命名区域))) - 把这个公式下拉到足够多的行(至少超过两个区域的ID总数),空行会显示
#REF!,可以不用管 - 打开名称管理器新建主区域,「引用位置」输入动态区域公式:
=OFFSET(Sheet3!$A$1,0,0,COUNTA(第一个命名区域)+COUNTA(第二个命名区域),1)
这样当原区域的ID数量变化时,主区域会自动调整范围。
一些注意事项
- 联合命名区域(方法1)是不连续的,部分函数(比如
SUMIF)对不连续区域的支持有限,这种时候可以用SUMPRODUCT或者AGGREGATE来替代 - 动态数组方法(方法2的新版Excel)会自动同步原区域的内容更新,不需要手动调整
- 旧版Excel的动态区域公式需要确保原区域没有空单元格,否则
COUNTA会统计错误
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

