Excel中的超级表Table详细介绍(二)
前面我们介绍了Table的使用。今天我们来介绍结构化引用
结构化引用介绍
使用了表之后,公式中引用单元格时就会发生变化,这种新的引用方式叫做“结构化引用”。
我们先来直观感受一下结构化引用。在一个“Tabel”右侧相邻的单元格中,输入“=sum(”,然后点击“Table”中任意单元格,会得到如下的公式(在2007中,公式稍有不同):
=SUM(表1[@销售额])
公式不再是=sum(E3)这样的形式,这里:
“表1”:代表“Tabel”的名字
[销售额]: 代表列的名字
@代表这一行(公式所在的同一行)
所以这一个公式的意思非常直截了当:对“表1”的“销售额”列求和
注:我们使用的表,可以参见下图
结构化引用详解
一个结构化引用是指上面的例子中sum函数的括号中的内容(本来这个地方是写单元格区域的)。这个引用有几部分组成:
表1[@销售额]
1. 表名,在这里叫做表1
2. [],界定符,指明引用的范围和方式
3. 列名,例子当中的”销售额”
4. @,表示引用的项目,@标识当前行。
#全部 表示整个表,包括标题行,数据区域,汇总行
#数据 表示数据区域
#标题 表示标题行
#汇总 表示汇总行
@ 表示本行
表1[客户]
表示整个表1的客户列(只包含数据部分,不含标题行和汇总行。你可以使用公式:counta(表1[客户]),结果就是客户列中的数据个数。使用公式:index(表1[客户],1,0),结果就是返回表中的第一个客户名称表1[[#全部],[客户]]
与上面类似,不过表示的是客户数据部分加上标题行,使用公式:counta(表1[[#全部],[客户]]),结果就是客户个数+1;使用公式index(表1[[#全部],[客户]],1,0),返回的是该列的标题。表1[[#数据],[客户]]
与表1[客户]结果相同表1[[#汇总],[销售额]]
引用销售额的汇总。要说明的是,这里的汇总指的是表1的汇总行,如果该表格没有汇总行,引用会返回#REF错误。如果有汇总行,你可以直接使用公式=表1[[#汇总],[销售额]],结果与sum(表1[销售额])相同表1[[#标题],[销售额]]
引用销售额的标题行。直接使用公式=表1[[#标题],[销售额]],返回销售额列的列名表1[#标题]
引用表1的标题行区域,使用公式counta(表1[#标题]),结果就是表1的列的个数。公式index(表1[#标题],0,2),结果就是第二列的标题表1[#全部]
引用表1的整个区域表1[#数据]
引用表1的数据区域(除了标题行和汇总行的部分)表1[#汇总]
引用表1的汇总行(如果有的话)表1[[#数据],[客户]:[销售额]]
引用表1从客户列到销售额列之间的所有数据区域
注:
1. 你可能已经发现,#全部,#标题,#数据,#汇总都可以省略,这时就表示相应的数据区域。
相对引用和绝对引用的变化
在表格区域外,找一个单元格,写公式:
=sum([销售额])
然后试着左右拖动鼠标讲这个单元格公式填充到左右相邻的单元格区域,你会发现引用的区域变了,效果跟单元格引用中的相对引用类似。多试验几次,可以总结如下的规律
1. 相对引用只发生在鼠标拖拽填充时,复制/粘贴时不影响
2. 相对引用只发生在鼠标左右拖拽填充时,上下拖拽填充不影响
3. 如果应用的是表格“Table”中最右边一列时,继续向右拖拽填充,引用会变成第一列
尽管与引用单元格时相比,填充单元格公式时已经方便了非常多,但是,我们还是需要在某些时候左右鼠标拖拽填充时能够绝对引用。
这时,我们就需要采用这种方式来引用相应区域:
表1[[销售额]:[销售额]]
总结
与单元格引用相比,结构化引用对公式的可读性来说,会带来非常明显的改进,在后期公式维护方面(考虑到其他人读你的公式)就更是具有非常大的优点。而且,由于表格区域是自动扩展的,也会极大的减轻了对公式进行后期修改的需要,所以,建议大家都来学习结构化引用,很可能会为你带来意外的惊喜。
而且,这种引用的书写非常简单,只要你写出了表的名字,Excel会自动出现相应的提示。
取得本文模板文件的方式: