告别密密麻麻的A2:A100,WPS表格名称管理器实战教程



Lv.3优质创作者
这篇不废话,直接上手五个实战:省份→城市二级联动、数据加一行图表多一根、滚动条控制看几个月、普通表透视表自动更新、打印区域自动包住数据,最后再来个不靠INDIRECT的多级联动升级版。每个案例都从“解决什么问题”开讲,步骤+关键点配齐,跟着做就完事!
5️⃣ 实战场景:名称×公式的动态玩法
5.1 批量命名+INDIRECT:合计行自动认标题
在案例文件:1高一成绩表中,我们需要在成绩表最下方添加最高分、最低分和平均分,以最高分为例:
计算语文全年级最高分,我们可以直接写公式=MAX(E2:E61),E2:E61就是全年级学生的语文成绩。
在上篇的方法3我们知道用「指定」批量创建名称的方法。在这里计算语文全年级最高分就可写为:
=MAX(语文)
但在拖动时犯了难:=MAX(E2:E61)往右一拖就完成自动填充实现其他科目的统计,但公式里的名称并不会自动把“语文”换成“数学”,难道要一个个手敲?
INDIRECT的回答是我不用,我们让公式自己认标题。关于这个函数官方的介绍是这样的:
我觉得有些晦涩难懂,大白话理解就是:读取单元格引用(第一参数)对应的单元格内的文本,将这个文本转换为单元格或者区域引用(文本写的是哪个,就指向哪个单元格/区域),返回给外层函数使用。
结合这个成绩表,我们可以把公式写为:
同理,掌握了这个自动识别表头标题的思路,求其他科目的最高分、最低分、平均分都可以直接套用,横向拖动公式一键批量生成。
要求各班级的科目最大值,只需要在内部嵌套一个IF语句,提取指定班级的区域即可,公式为:
=MAX(IF(INDIRECT($B$1)=$B63,INDIRECT(E$1),""))
| ❗ | 注意 用「指定」批量创建的名称,引用位置是创建那一刻框选的固定区域,不会随数据追加自动扩展。在底部新增行,合计行会漏掉新数据。 所以这个写法适合数据区域已经确定、不再追加行的报表。如果数据每天变长,固定区域名称就有局限。想要区域自动跟着数据伸缩,那就是接下来我们要介绍的内容了。 |
5.2 OFFSET动态名称:制作动态的数据透视表数据源
我在WPS表格常用查找函数终极指南3——INDEX与MATCH这篇文章第5️⃣.4节,介绍了使用INDEX制作动态图表,就是通过名称管理器定义一个公式型名称实现的。其实制作随数据源的改变而改变的数据透视表也是类似的道理,也可以使用INDEX函数,这次我们换换,用OFFSET函数来实现相同的功能。
OFFSET函数是以指定的引用为参考系,通过给定的偏移量、行数及列数返回一个新的引用:
在案例文件:2蛋糕店销售明细中,我们需要先用OFFSET函数定义数据源区域随数据增删而改变,再添加数据透视表。
首先新建名称,命名为“销售明细表”;范围必须选择“工作簿”,因为跨表引用,不能作用于当前表格;引用位置输入公式:
这样,名称“销售明细表”指向的区域就变成”从A2开始、B列有多长就框选多长、第二行有多宽就框选多宽”的活区域。底部追加一笔销售,B列非空数+1,区域自动向下多圈一行;右侧新增一列,第二行非空数+1,区域自动向右多圈一列。
有了这个名称,插入透视表时就有讲究了:“表/区域”一栏不要用鼠标去框单元格,直接手动敲名称。
点击【插入】→「数据透视表」;
在弹出的对话框里,“请选择单元格区域”框直接手动输入销售明细表(不要加等号和引号);
选择放置位置后点击「确定」。
数据透视表创建好后,我们可以调整字段并按日组合日期,实现按日统计销售额。在原始数据末尾新增记录后,需在数据透视表中右键「刷新」,因为对日期进行组合,新增数据超出原组合范围,需重新组合字段后实现数据透视表与原始数据的同步更新。
| ❗ | 注意
|
5.3 OFFSET动态名称:让图表的数据源自动伸缩
这是OFFSET动态名称除了数据透视表之外另一个经典用法。图表如果直接绑定 $A$1:$B$10,新增一行数据图表不会理你;但如果把图表的“系列值”改成引用一个用OFFSET定义的名称,数据增删后刷新图表就能自动跟上。
做法和5.2几乎一样,只是落点从数据透视表换成了图表,数据透视表的引用区域是整个数据表,而图表在使用动态名称时每一项引用一列数据,比如横轴为时间、纵轴为销售额,则需要新建两个名称:一个对应时间列,一个对应销售额列,注意图表系列引用的动态区域不要包含表头标题,这一点和数据透视表需要带上表头的数据源写法不一样。
具体写法也可以参考WPS表格常用查找函数终极指南3——INDEX与MATCH这篇文章第5️⃣.4节INDEX制作动态图表,试试看把函数替换为OFFSET函数如何实现,本文不再重复赘述(案例文件:WPS表格常用查找函数终极指南-案例)。
5.4 动态Print_Area:自动适配数据的打印区域
很多时候我们在打印表格时并不需要右侧后面的一些注释列,但是数据会增加,每次打印都得重新设置打印区域,一旦哪一次忘记,就很容易打印遗漏。
其实方法和 5.2 一模一样,只是这次我们改的不是自己新建的名称,而是WPS表格里一个早就存在的内置名称:Print_Area。
操作步骤:
首先设置打印区域:选择需要设置的打印区域,点击【页面】选项卡下的「打印区域」即可。
打开“名称管理器”就能看到一个名为Print_Area,范围为对应的工作表名称。点击这个名称,修改“引用区域”的公式,参考5.2的写法,使用OFFSET函数,注意确认好高度和宽度。
| ❗ | 注意 设置完成后,如果需要修改就直接在名称管理器中修改,不要在【页面】选项卡里再点一次“设置打印区域”这样会重新覆盖Print_Area,刚才写的OFFSET公式就没了。改完名称之后,点击「打印预览」看效果就行,不要再碰那个按钮。 |
5.5 二级联动下拉菜单(名称 + 数据验证)
我在WPS表格常用查找函数终极指南4——INDEX+MATCH组合这篇文章第7️⃣.3节,介绍了使用INDEX+MATCH制作动态下拉菜单,通过确认指定省所在的区域去确定二级下拉的城市,这样针对是“扁平堆叠、按层级排序”的对照表,省市县三级并列,相同省市排列在一起,确定起点和终点就能截取需要的序列。针对这种表格,不管层级有多少,只要是按顺序排列的,都能用同一套公式搞定,同样也使用上了名称管理器,需要了解的友友可以点击前方蓝字链接跳转查看。
这里我们是需要针对另一种场景:每列第一行是一级菜单,后续单元格都是二级菜单。
在案例文件:4学生名单中,根据案例文件:1高一成绩表提取了一份按班级汇总的高一年级学生名单,第一行是班级,班级下面是各班级对应的学生名单。通过这个名单制作一个可通过选择不同班级和学生动态查询学生成绩的表格。
还有一个隐蔽的坑:有些特殊符号(如半角括号)在名称管理器里会被自动替换,导致你建出来的名称和单元格里的文字对不上,INDIRECT 自然找不到。你之前问的 SUBSTITUTES 替换括号,本质上就是在绕这个坑。
这里就不给出具体步骤与解析了,操作过程看下方动态图,具体公式可查看案例文件:
6️⃣ 常见报错排查
名称管理器的报错分两类:建名称时“名字不合规”存不进去,和名称建好后在别处“用不了”。前者在新建弹窗就拦下,后者往往在数据验证、公式里才暴露。
新建名称时需满足上期的命名规则,这里不再赘述:
6.1 名称建好后:引用时报错
6.1.1 #NAME?:找不到名称
公式里写的名称不存在,或拼写不一致。排查方向:
名称是否真的建了,作用域对不对,或则字符有敲错,半角/全角差异等;
修改名称文字后,所有调用旧名称的公式会立刻报#NAME?,只改引用位置不会触发。
6.1.2 #REF!:引用断裂
名称指向的工作表或区域被删了、整行整列被剪切走了,名称就“悬空”了。进名称管理器,【引用位置】列显示#REF!的就是断裂名称。两种处理:
还要用:选中→「编辑」→重新指定引用位置;
不再用:点右上角【筛选】→勾选【错误名称】,Ctrl 多选后批量删除。
6.1.3 数据验证报“源当前包含错误”或“找不到名称”
名称指向了超级表或结构化引用(如 =Table1[列名])。数据验证不认这种来源,必须让名称指向具体的 $A$2:$A$100 区间;
名称里用了动态数组函数(SORT、UNIQUE、FILTER、SUBSTITUTES)。数据验证的“来源”框不支持在名称里现场算数组,会直接报错;
名称作用域是“工作表”而非“工作簿”,却在另一张表里引用它。跨表用的名称,范围一律选“工作簿”。
6.1.4 INDIRECT 返回 #REF! 或下拉空白
INDIRECT 拿着文字去找同名名称,找不到就 #REF!。除了 6.2.1 的文字一致性问题,还要确认:名称是否真的存在、名称指向的区域是否被删。另外别忘了 =INDIRECT(E2) 里 E2 不能加引号,写成 INDIRECT("E2") 会把 E2 当文本解析,同样出错。
6.2 两个容易忽略的连带坑
作用域建完不能改。范围选错了只能删了重建,所以新建时先想清楚是工作簿级还是工作表级。
别手动删系统内置名称。Print_Area、Print_Titles 删了会直接丢失打印区域、打印标题设置;5.4 里改 Print_Area 的公式可以,但别把名称本身删掉。
说到底,名称管理器就是一个给数据贴标签的工具。标签贴好了,公式自己会说话,同事接手不用问,你改数据也不用怕漏。下次写公式之前,先花十秒给那个区域起个名字,比省那十秒划算得多。
Lv.3 优质创作者
Lv.3 优质创作者