Table of contents
本教程解释了Excel结构化引用的基础知识,并分享了在实际公式中使用它们的一些窍门。
Excel表格最有用的功能之一是结构化引用。 当你刚刚偶然发现引用表格的特殊语法时,它可能看起来很枯燥和混乱,但在试验一番后,你一定会发现这个功能是多么有用和酷。
Excel结构化参考
A 结构化参考 ,或 表格参考 是引用表格及其部分的特殊方式,它使用表格和列名的组合而不是单元格地址。
之所以需要这种特殊的语法,是因为Excel表格(相对于范围)是非常强大和有弹性的,普通的单元格引用不能随着数据的添加或删除而动态调整。
例如,要对单元格B2:B5中的数值进行求和,可以使用SUM函数与通常的范围参考。
=SUM(B2:B5)
为了将表1的 "销售 "列中的数字相加,你使用了一个结构化引用。
=SUM(Table1[Sales])
结构化参考文献的主要特点
与标准的单元格引用相比,表格引用有许多高级功能。
很容易创建
要在你的公式中添加结构化引用,你只需选择你想引用的表格单元格。 不需要了解特殊的语法。
有弹性并自动更新
当你重新命名一个列时,引用会自动更新为新的名称,并且公式不会中断。 此外,当你向表中添加新的行时,它们会立即包括在现有的引用中,并且公式会计算全部数据。
因此,无论你对你的Excel表格做什么操作,你都不必担心更新结构化引用。
可在桌内和桌外使用
结构化引用可以在Excel表格内部和外部的公式中使用,这使得在大型工作簿中定位表格更加容易。
公式自动填充(计算栏)。
要在每个表格行中进行同样的计算,只需在一个单元格中输入一个公式即可。 该列中的所有其他单元格都会自动填充。
如何在Excel中创建一个结构化引用
在Excel中进行结构化引用是非常简单和直观的。
如果你正在处理一个范围,首先将其转换为Excel表格。 为此,选择所有数据并按Ctrl + T 。 更多信息,请参见如何在Excel中创建一个表格。
要创建一个结构化的引用,这是你需要做的。
- 像往常一样开始输入一个公式,以等号(=)开始。
- 当涉及到第一个引用时,在你的表格中选择相应的单元格或单元格区域,Excel会自动拾取列名并为你创建一个适当的结构化引用。
- 键入闭合括号并按回车键。 如果公式是在表格内创建的,Excel会自动用相同的公式填充整个列。
作为一个例子,让我们把样本表中每一行的3个月的销售数字加起来,名为 销售 为此,我们在E2中键入=SUM(,选择B2:D2,键入结束括号,然后按回车。
结果,整个E列被自动填上了这个公式。
=SUM(Sales[@[Jan]:[Mar]] )
虽然公式是一样的,但每一行的数据都是单独计算的。 要了解内部机制,请看一下表格参考语法。
如果你正在输入一个公式 表外 ,而且该公式只需要一个单元格范围,一个更快的方法是这样进行结构化引用。
- 在开头的括号后,开始键入表名。 当你键入第一个字母时,Excel将显示所有匹配的名称。 如果有必要,多键入几个字母以缩小列表范围。
- 使用方向键选择列表中的表名。
- 双击所选名称或按Tab键,将其添加到你的公式中。
- 键入闭合小括号并按回车键。
例如,为了找到我们样本表中最大的数字,我们开始输入MAX公式,在开头的括号后输入 "s",选择 销售 列表中的表,并按Tab键或双击该名称。
作为结果,我们有这样的公式。
=MAX(Sales)
结构化引用语法
如前所述,你不需要知道结构化引用的语法来将其纳入你的公式中,然而这将有助于你理解每个公式的实际作用。
通常情况下,结构化引用由一个字符串表示,该字符串以表名开始,以列指定符结束。
作为一个例子,让我们来分析一下下面的公式,该公式将下列各项的总数相加 南方 和 北方 表中的列名为 地区 :
该参考资料包括三个部分。
- 表名
- 项目说明者
- 列的指定者
要看哪些单元格是实际计算的,选择公式单元格并点击公式栏的任何地方。 Excel将突出显示引用的表格单元。
表名
表名只引用了 表格数据 它可以是一个默认的表名,如 表1 或一个自定义名称,如 地区 要给你的表起一个自定义名称,请执行以下步骤。
如果你的公式位于它所指的表内,表名通常被省略,因为它是隐含的。
列的指定
列指定器引用相应列中的数据,不包括标题行和总行。 列指定器由括号内的列名表示,例如[南]。
要指代一个以上的连续列,使用范围运算符,如[[南]:[东]]。
项目说明者
要引用一个表格的特定部分,你可以使用以下任何一个指定器。
项目说明者 | 指的是 |
[#全部] | 整个表格,包括表格数据、列标题和总行。 |
[#数据] | 的数据行。 |
[#标题] | 标题行(列标题)。 |
[#Totals] | 总行。 如果没有总行,则返回null。 |
[@Column_Name] | 当前行,即与公式相同的行。 |
请注意,除了当前行之外,所有的项目指定符都使用了磅符号(#)。 为了指代你输入公式的同一行的单元格,Excel使用@字符,后面是列名。
例如,要将数字加在 南方 和 西部 当前行的列,你会使用这个公式。
=SUM(Regions[@South], Regions[@West])
如果列名中包含空格、标点符号或特殊字符,则列名周围会出现一组额外的括号。
=SUM(Regions[@[South sales]], Regions[@[West sales]] )
结构化参考运算符
以下运算符允许你结合不同的指定器,为你的结构化引用添加更多的灵活性。
范围操作符(冒号)。
与普通的范围引用一样,你可以使用冒号(:)来引用表格中两个或多个相邻的列。
例如,下面的公式是将所有列中的数字加起来,其中包括 南方 和 东部 .
=SUM(Regions[[South]:[East]])
联合运算符(逗号)
要引用不相邻的列,请用逗号分隔列的指定符。
例如,下面是你如何将数据行相加的方法。 南方 和 西部 列。
=SUM(Regions[South], Regions[West])
交叉运算符(空间)
它被用来指代位于特定行和列的交叉点的单元格。
例如,要返回一个位于 共计 行和 西部 列,请使用此参考。
=地区[[#总数]地区[[#全部],[西部]]
请注意,在这种情况下,[#所有]指定符是必须的,因为列指定符不包括总行。 没有它,公式将返回#NULL!。
表的参考语法规则
要手动编辑或制作结构化参考资料,请遵循以下准则。
1.用方括号括起来的说明者
所有栏目和特殊项目的指定者必须用[方括号]括起来。
一个包含其他指定符的指定符应被包裹在外括号中。 例如,Regions[[South]:[East]]。
2.用逗号隔开内部指定器
如果一个指定符包含两个或多个内部指定符,这些内部指定符需要用逗号隔开。
例如,要返回头的 南方 列,你在[#Headers]和[South]之间输入一个逗号,并将整个结构包围在一组额外的括号内。
=区域[[#标题],[南方]]
3.不要在列标题周围使用引号
在表格参考中,无论是文本、数字还是日期,列标题都不需要引号。
4.对列标题中的一些特殊字符使用单引号
在结构化引用中,一些字符如左括号和右括号、磅符号(#)和单引号(')有特殊含义。 如果上述任何字符包含在列头中,在列指定符中的该字符之前需要使用单引号。
例如,对于列标题 "Item #",指定器是[Item '#]。
5.使用空格,使结构化的参考资料更易阅读
为了提高表格引用的可读性,你可以在指定符之间插入空格。 通常,在逗号之后使用空格被认为是一个好的做法。 例如。
=AVERAGE(Regions[South], Regions[West], Regions[North])
Excel表格参考--公式示例
为了进一步了解Excel中的结构化引用,让我们再来看看几个公式的例子。 我们会尽量让它们简单、有意义和有用。
查找Excel表格中的行数和列数
要获得总的列数和行数,请使用COLUMNS和ROWS函数,它们只需要表名。
COLUMNS( 桌子 ) ROWS( 桌子 )例如,要找到列的数量和 数据行 的表格中的 销售 ,使用这些公式。
=COLUMNS(Sales)
=ROWS(Sales)
要包括 页眉 和 总行数 在计数中,使用[#ALL]指定器。
=ROWS(Sales[#All])
下面的屏幕截图显示了所有公式的运行情况。
计算一列中的空白和非空白
当计算特定列中的东西时,一定要在表外输出结果,否则你可能会出现循环引用和错误的结果。
要计算一列中的空白,请使用COUNTBLANK函数。 要计算一列中的非空白单元,请使用COUNTA函数。
例如,要想知道有多少个细胞在 扬 有多少列是空的,有多少列包含数据,使用这些公式。
空白。
=COUNTBLANK(Sales[Jan])
非空白。
=COUNTA(Sales[Jan])
要计算非空白细胞在 可见行 在一个经过过滤的表中,使用SUBTOTAL函数,函数_num设置为103。
=SUBTOTAL(103,Sales[Jan])
在Excel表格中求和
在Excel表格中,将数字相加的最快方法是启用总行选项。 要做到这一点,右击表格中的任何单元格,指向 表 ,然后点击 总数行 总数行将直接出现在你的表格末尾。
有时,Excel可能会认为你只想对最后一列进行合计,而使合计行中的其他单元格处于空白状态。 要解决这个问题,请在合计行中选择一个空单元格,点击该单元格旁边出现的箭头,然后在列表中选择SUM函数。
这将插入一个SUBTOTAL公式,该公式只对下列数值进行求和 可见行 ,忽略了被过滤掉的行。
=SUBTOTAL(109,[Jan])
请注意,这个公式只在 总行 如果你试图在数据行中手动插入它,这将创建一个循环引用,并返回0作为结果。 出于同样的原因,一个具有结构化引用的SUM公式也不会工作。
因此,如果你想获得总数 表内 ,你需要启用总行或使用一个正常范围的参考,如。
=SUM(B2:B5)
桌子外面 ,带有结构化引用的SUM公式就可以正常工作了。
=SUM(Sales[Jan])
请注意,与SUBTOTAL不同的是,SUM函数将所有行的值加起来,不管是可见还是隐藏的。
Excel中的相对和绝对结构化引用
默认情况下,Excel结构化引用的行为方式如下。
- 多列 参考资料是 绝对的 并且在复制公式时不会改变。
- 单列 参考资料是 相对 当通过相应的命令或快捷键(Ctrl+C和Ctrl+V)复制/粘贴时,它们不会改变。
当你需要结合相对和绝对的表格引用时,没有办法在复制公式的同时保持表格引用的正确性。 拖动公式会将引用改为单列,复制/粘贴快捷方式会使所有的引用变成静态的。 但是有几个简单的技巧可以绕过!
对单列的绝对结构化引用
要使单列引用成为绝对的,重复列名,正式将其变成范围引用。
相对列的参考(默认)。
表[列]
绝对列参考
表[[列]:[列]]
为了使绝对引用 当前行 ,在列的标识符前加上@符号。
表[@[列]:[列]]
为了了解相对和绝对表引用在实践中是如何工作的,请考虑以下例子。
假设你想把一个特定产品3个月的销售数字加起来,为此,我们在某个单元格(在我们的例子中是F2)中输入目标产品的名称,并使用SUMIF函数得到以下总数 扬 销售。
=SUMIF(Sales[Item], $F$2, Sales[Jan])
问题是,当我们把公式向右拖动以计算其他两个月的总数时,[项目]的参照物就会改变,公式就会中断。
为了解决这个问题,使[项目]的引用成为绝对的,但保持[Jan]的相对性。
=SUMIF(Sales[[Item]:[Item]], $F$2, Sales[Jan] )
现在,你可以把修改后的公式拖到其他列,而且效果很好。
对多列的相对结构化引用
在Excel表格中,对几列的结构性引用就其性质而言是绝对的,在复制到其他单元格时保持不变。
对我来说,这种行为是非常合理的。 但如果你需要使结构化的范围引用相对化,就在每一列的指定符前加上表名,并删除外面的方括号,如下图所示。
绝对范围参考(默认)。
table[[column1]:[column2]]
相对范围参考
表[column1]:表[column2]
要参考的是 表内的当前行 ,使用@符号。
[@column1]:[@column2] 。
例如,下面的公式有一个 绝对结构化参考 的当前行中的数字相加。 扬 和 2月 当复制到另一列时,它仍将是 扬 和 2月 .
=SUM(Sales[@[Jan]:[Feb]] )
如果你想根据复制公式的那一列的相对位置来改变参考值,请将其改为 相对 :
=SUM(Sales[@Jan]:Sales[@Feb])
请注意F列中的公式转换(表名被省略了,因为公式在表内)。
这就是在Excel中进行表格引用的方法。 要想仔细看看本教程中讨论的例子,请随时下载我们的样本工作簿,以Excel结构化引用。 感谢你的阅读,希望下周能在我们的博客上见到你。