【结构化引用】高效的数据引用技巧
创作者俱乐部成员
本文约3000字左右,多图多例请收藏后阅读。
👋 | 本人的前几个帖子都提到了对表格的结构化引用: 【技巧分享】多数据源合并 https://bbs.wps.cn/topic/38242 【技巧分享】表格公式中的[、#、@的另类使用方法 |
📌 | 在社区的互动中,有朋友表示想看到表格结构化引用的详细说明。 |
什么是结构化引用?
别说是表格新人,就连很多表格老鸟、表格大佬都不一定知道结构化引用这个名词,对于“引用”大佬们说得最多的是绝对引用和相对引用。
绝对引用和相对引用都属于区域引用,还有一个引用方法是结构化引用。
举个最简单的例子:
区域引用:=C2*D2或=C2:C21*D2:D21
结构化引用:=销售明细[业务量]*销售明细[提成]
举例:
🔔 | 本文示例文档: |
首先按Ctrl + T(Mac:command ⌘+ T)将数据源转换为表:
鼠标方式为插入⇒表格:
表的命名规则
WPS会对新建的表默认命名为表1、表2、表3等,在表格工具标签栏中可以修改表名称为自己方便记忆的名称,对于表名称,有以下命名规则:
使用有效字符 名称始终以一个字母加一个下划线字符 (_) 或一个反斜杠 (\) 开头。 在名称的其余部分中,可使用字母、数字、句点和下划线字符。 名称中不能使用“C”、“c”、“R”或“r”,因为它们已指定为与以下行为对应的快捷方式:在名称或转到框中输入这些字母时,选择活动单元格所属的列或行。
不能使用单元格引用 名称不能与单元格引用(例如 Z$100 或 R1C1)相同。
不要使用空格分隔单词 名称中不能使用空格。 可以使用下划线字符 (_) 和句点 (.) 作为单词分隔符。 例如:销售明细、销售_增值税 或 标题.一 。
使用的字符数不超过 255 个 表名称最长可以包含 255 个字符。
使用唯一的表名称 不允许重复的名称。 Excel 对名称中的字符并不区分大小写,因此如果你输入“销售明细”,但同一个工作簿中已经有另一个名称为“销售明细”,你就会收到选择一个唯一名称的提示。
使用对象标识符 如果计划混合使用表、数据透视表和图表,则最好在名称前加上对象类型。 例如:表_销售 代表销售表,透视表_销售 代表销售数据透视表,图_销售 代表销售图表,透视图_销售 代表销售数据透视图。 这会将你的所有名称保存在名称管理器中的排序列表中。
本例修改表名为“销售明细”
如果要计算小计和结算金额,小计=单价×业务量,业务提成=小计×业务提成
区域引用的公式,输入=C2*D2,然后手动向下复制/双击单元框控制柄/Ctrl + D....
使用结构化引用:
结构化引用的公式:=[@单价]*[@业务量]
更规范的书写方式为:=[@[单价]]*[@[业务量]],这两种写法都没错。
这里结构化引用公式录入后按下回车⏎,表中公式自动向下填充都最后,将来无论是插入列还是删除列都不会影响计算公式,因为结构性引用是表结构引用的,即使说无论这个表在工作簿中的任意位置任意工作表内,使用结构性引用都可以直接引用到。
可能有人会跟着示例尝试了,发现结构性引用在表里面可以成功,在表外面却无法使用,这是什么原因?
因为在表中结构性引用表本身,不需要特别指定,默认就是本表,在表外部录入公式,则需要指定表,否则表格程序不会理解需要引用哪个表(表1、表2、表3、表4....)?
在表以外的区域需要引用表中的数据就需要先加上表名(下文有详细说明)
语法规则
这里说一下结构化引用的语法规则:
语法一
表名称:“销售明细”是自定义表名称。它引用表数据(不包含任何标题或汇总行)。可以使用默认的表名称,如表1,也可以更改为自定义名称。
列说明符:[小计]和[业务提成]是使用期所表示的列名称的列说明符。它们引用列数据(不包含任何列标题或汇总行)。 始终将说明符用所示的方括号括起来。
项目说明符:[#汇总] 和 [#数据] 是引用表的特定部分(如汇总行)的特殊项目说明符。
表说明符:[[#汇总],[业务量]] 和 [[#数据],[结算金额]] 是表示结构化引用外层部分的表说明符。外部参照跟在表名称之后,并括在方括号中。
结构化引用:销售明细[[#汇总],[业务量]] 和 销售明细[[#数据],[结算金额]] 是结构化引用,使用以表名称开头、以列说明符结尾的字符串表示。
有同学会提问为什么演示动图中的=销售明细[[#数据],[业务量]]和=销售明细[@业务量]得到的结果是一样的,而自己做出来的就不一样,是哪里出错了吗?
没有错,这是WPS的问题,WPS for Mac是没有动态数组的阉割版,正常情况下=销售明细[[#数据],[业务量]]得到的应该是数组,后文开始用Excel for Mac做个演示:
心细的同学可能发现了一个小问题,为什么在Excel里输入表名后会有结构化引用的列表供选择,自己在Windows上就没有这个提示,难道这是Windows和Mac的差异吗?
其实.....
无论是Windows还是Mac的Excel中输入表名后都会有结构化引用的列表提示供选择,无论是Windows还是Mac的WPS在输入表名后都不会提示结构化引用,也许这印证了本文开头的那句话...
📌 |
语法二
言归正传,继续说明结构化引用的语法:
手动创建或编辑结构化引用,使用一下语法规则:
使用括号将说明符括起来:所有表格、列和特殊项目说明符都需使用一对方括号 ([ ]) 括起。 对于包含其他说明符的说明符,需要在其他说明符的内方括号对的外侧使用方括号对括起。 例如,=销售明细[[业务员]:[地区]]
所有列标题都为文本字符串:但它们用于结构化引用中时不需要使用引号。 数字或日期,例如 2014 或 2014/8/1,也被视为文本字符串。 不能对列标题使用表达式。 例如,表达式 销售明细[[2014]:[2012]] 将不起作用。
用方括号将包含特殊字符的列标题括起来:如果包含特殊字符,整个列标题就需要括在括号中,这意味着列说明符中需要使用双重括号。
结构化引用中涉及到的特殊字符包括以下列表:
为了怕各位看不清楚这些符号,特地配上Unicode值(后文有特殊字符的文档链接)
对列标题中的特殊字符使用转义字符 某些字符具有特殊的含义,需要使用单引号(')作为转义字符,下面是公式中需要专一字符的特殊字符列表:
语法三
使用空格字符提高结构化引用的可读性 可以使用空格字符来提高结构化引用的可读性。 例如:=销售明细[[业务员]:[地区]] 或 =销售明细[[#标题],[#数据],[业务提成]]
(丐版WPS不配拥有动态数组,只好请出Excel来做演示)
建议在以下位置使用一个空格,以提高结构化引用的可读性:
在第一个左中括号后
在最后一个右中括号后
在逗号后
运算符
为了在指定单元格区域时增加灵活性,可以使用以下引用运算符来组合列说明符。
特殊说明符
要引用表格的特定部分(例如只引用汇总行),可以在结构化引用中使用下列任意特殊项目说明符。
计算列中的限定结构化引用
创建计算列时,通常使用结构化引用来创建公式。 此结构化引用可以是非限定的,也可以是完全限定的。 例如,“结算金额”列中,可以使用以下公式:
应遵循的一般规则为:如果在表格内使用结构化引用(例如在创建计算列时使用),则可以使用非限定的结构化引用,但如果在表格之外使用结构化引用,则需要使用完全限定的结构化引用。
📌 | 特殊说明符文档: |
特别鸣谢本次知识分享参与者
谢谢阅读
投票哪种引用方式更适合你?(2选2)
- 结构化引用 4
- 区域引用 4
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员