前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >精通Excel数组公式003:数组公式是个啥

精通Excel数组公式003:数组公式是个啥

作者头像
fanjy
发布于 2020-06-03 01:08:10
发布于 2020-06-03 01:08:10
2.1K0
举报
文章被收录于专栏:完美Excel完美Excel

本文详细讲解数组公式的相关概念,为数组公式进一步学习打下基础。

基本概念

数组是两个或多个项目的集合。在Excel中,有三种类型的数组:

1. 引用数组,包含一个以上的单元格引用,例如单元格区域、工作表引用和定义的名称。

2. 由公式元素创建的数组,也称作结果数组,是通过数组操作创建的一组项目。

3. 数组常量,一组硬编码到公式中的值。

数组公式是一种包含对一组项目而非单个项目进行运算(数学、比较、连接或函数参数)的公式,并且运算提供的结果是一组项目而不是单个项目。这种运算被称为数组运算,以区别于聚合运算。结果数组可用于大公式中的公式元素,也可以是公式传递到单元格区域中的最终结果。数组公式的结果可以是单个项目,也可以是一组项目。

理解数组公式的概念

在上述数组公式的概念中,核心是“执行对一组项目而非单个项目的运算”。我们以示例来讲解这个概念。

如下图1所示,我们想要计算这4天收盘价与开盘价之间的变化的最大值。

图1

图1所示的工作表中的计算过程如下:

1. 在单元格E3中使用公式=D3-C3计算该天的变化值,这只是一个简单的单个值之间的减法运算。

2. 同样,使用减法运算计算出其它3天的变化值。

3. 在单元格E8中,使用公式=MAX(E3:E6)求出这4天变化值中的最大值。

很显然,这些公式都不是数组公式,因为它们只是在单个项目上执行运算,得到的结果也是单个项目。

辅助列

在上图1所示的工作表中,要获取这4天股价的最大变化值,我们先在列E中计算每天的变化值,然后再将这些值传递给MAX函数求得最大值。我们称列E为辅助列,因为它帮助我们获取需要计算股价变化最大值的值。由MAX函数执行的运算称为聚合运算,因为它遍历所有值并计算出结果,这不是数组运算,虽然它处理多个项目。

如果你的需求要求显示每天的股价变化量,那么构造辅助列,然后使用MAX函数聚合运算是一种很好的解决方案。然而,如果你不想看到详细的计算过程,只是想计算出最大变化量,或者有成千上万的数据,创建辅助列占用工作表空间且耗费较大,那么可以使用单个单元格数组公式来解决。

单个单元格的数组公式

下图2中,使用公式来计算4天股价变化的最大值。

图2

图2中使用了一个公式进行计算,其过程如下:

1. 单元格D8中包含从单元格区域D3:D6中的值减去单元格区域C3:C6中的值的公式,执行着两组数值的减法运算:D3:D6-C3:C6。

2. 减法运算的结果是一组数值。然后,MAX函数从这组数值中取最大值作为结果。

这是一个数组公式,因为直接对两组项目执行运算,并且生成的结果是一组数字。

技巧:使用评估公式元素来显示结果数组

在数组公式处于编辑状态时,我们可以评估公式元素的计算结果。例如,在图2所示的示例中,我们可以看看该公式中的D3:D6-C3:C6是否生成与图1辅助列一致的结果。

1.选择公式中的元素,如下图3所示。

图3

2.按F9键评估公式中所选的部分公式元素,如下图4所示,数组元素与辅助列的值相同。

图4

注意,为了避免无意中将硬编码放置到公式,在按F9评估后,按Ctrl+Z来撤销。

这是在创建数组公式时经常使用的一个技巧,可以查看数组公式元素的结果,从而确保公式正确,特别是创建包含多个公式元素的大型数组公式时。

数组公式的正确输入方式

在上面的示例中,如果你像输入普通公式那样,在输入完后,按回车键,则会得到一个错误值#VALUE!,如下图5所示。

图5

这表明,没有正确地输入数组公式。在Excel中,除少数几个函数外(例如SUMPRODUCT、LOOKUP、AGGREGATE、INDEX),大部分函数都不能自动处理数组操作。因此,必须告诉Excel该函数的参数包含数组运算,希望Excel执行数组运算。通过使用特别的组合键Ctrl+Shift+回车键来告诉Excel执行数组运算。

也就是说,在输入完公式中的字符后,按Ctrl+Shift+回车键,这才真正完成了数组公式的输入。此时,Excel会自动在公式两端加上花括号,如上图2所示。

隐式交叉陷阱

如下图6所示,只有单元格B8中输入的数组公式才是正确的结果,其它的公式有的显示错误值#VALUE!,有的显示数字。错误值还好说,如果我们输入公式后获得的是数字,可能我们以为得到了结果,但这个结果却是错误的。

图6

观察一下,除数组公式外,得到数值的公式都是在数字数据的旁边列。在数字的旁边输入的公式,Excel会使用相同行的对应列进行计算处理,这被称作隐式交叉。如果我们不仔细,很可能认为这样的公式计算结果是对的,因此在使用数组公式时,在输入完公式后,我们要留意公式栏中,是否在公式两边已添加了花括号。这也提醒我们,数组公式的最终输入完成一定是以按下Ctrl+Shift+回车键为标准的。

数组公式的优缺点

优点

1. 数组公式有时是除了VBA外唯一的解决问题的方式。

2. 数组公式能够节省工作表空间(不需要一个或多个辅助列)。

3. 在多单元格中的数组公式难以删除。

4. 给定了所需要的结果和环境条件,数组公式是最好的选择。

缺点

1. 数组公式可能减慢公式计算时间,特别是对于包含具有大量单元格引用和计算的许多公式的工作表。

2. 大多数的数组公式都需要使用Ctrl+Shift+回车键,而这恰恰是最容易忘记的。

3. 使用的数组公式对于用户来说可能比较难以理解。

4. 数组公式的学习资料较少。

5. 创建数组公式有时相当复杂。

确定是否有比数组公式更有效的方法

1. 是否有实现同样目的的内置函数?

2. 是否可以使用辅助列?

3. 是否可以使用辅助单元格?

4. 是否可以使用筛选、高级筛选或数据透视表?

5. 是否有不同的公式选项?对于包含具有大量单元格引用和计算的许多公式的工作表来说,可能需要花时间设定不同的公式选项,以查看是否明显更快。

6. 是否有替代的数组公式或者非数组公式是更有效的?

7. 是否可以使用VBA代替数组公式?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
精通Excel数组公式004:数学数组运算
先来看一个示例。下图1所示的工作表中,在单元格区域B2:B5中是一组成本数据,在单元格B8中是净成本率,想要计算每项净成本,然后将它们相加。一种方法是,在辅助列中逐项计算净成本,然后使用SUM函数将这些净成本数值相加,正如下图1所示。
fanjy
2020/06/18
1.3K0
精通Excel数组公式004:数学数组运算
精通Excel数组公式010:认识数组函数:TRANSPOSE、MODE.MULT和TREND
数组函数是可以提供多个值的Excel内置函数。下面列出了8个Excel内置的数组函数:
fanjy
2020/09/08
1.9K0
精通Excel数组公式010:认识数组函数:TRANSPOSE、MODE.MULT和TREND
精通Excel数组公式012:布尔逻辑:AND和OR
布尔(Boolean)是一种数据类型,仅有两个值,即TRUE或FALSE,或者1或0:
fanjy
2021/01/20
2.5K0
精通Excel数组公式012:布尔逻辑:AND和OR
Excel公式技巧76:解决IF函数与数组函数的冲突
在Excel中,有一些函数可以接受数组参数进行数组运算,例如SUMPRODUCT函数,它们不需要像数组公式那样,在输入结束前要按Ctrl+Shift+回车键。然而,IF函数打破了这个规则。如果这些函数的参数是由IF函数提供,那么还是需要按Ctrl+Shift+回车键。
fanjy
2021/01/06
3K0
两个“神秘的”Excel快捷键
有时候,快捷键能够给我们带来很大的方便。大家最熟悉的快捷键可能是Ctrl+c和Ctrl+v了,很方便地为我们进行复制粘贴操作。
fanjy
2022/03/04
5730
两个“神秘的”Excel快捷键
Excel公式技巧40: 对数据随机排序
有时候,为公平起见,我们会将一组数据随机排序。如下图1所示,在列D中对列C中的数据随机排序。
fanjy
2020/07/29
5.2K0
Excel公式技巧40: 对数据随机排序
Office 365技术学习03:在公式中使用两个XLOOKUP函数
XLOOKUP函数是Office 365推出的一个新函数,可以完美解决需要使用INDEX函数/MATCH函数组合才能解决的问题。本文给出的示例,可以使用含有两个XLOOKUP函数的公式替代要达到同样目的而使用的INDEX/MATCH/MATCH函数组合公式。
fanjy
2019/12/23
2.4K0
精通Excel数组公式009:提供多个值的数组公式
如下图1所示,我们在单元格区域中使用数组公式生成序号,这样,使用者就不能够随意删除其中一个单元格中的序号,只能选中该区域后全部删除。
fanjy
2020/09/04
5.5K0
精通Excel数组公式009:提供多个值的数组公式
Excel揭秘19:SERIES公式
SERIES公式控制着绘制Excel图表的数据,并且只在图表中有效,它不是真正的公式但可以像Excel公式一样在公式栏对其进行编辑。
fanjy
2019/10/16
5.5K0
Excel揭秘19:SERIES公式
精通Excel数组公式011:令人惊叹的SUMPRODUCT函数
本文主要探讨什么时候使用SUMPRODUCT函数更有效,而什么时候应该使用SUMIFS函数代替SUMPRODUCT函数。
fanjy
2020/09/17
6.7K0
精通Excel数组公式011:令人惊叹的SUMPRODUCT函数
精通Excel数组公式021:提取唯一值列表并排序
本文将综合使用前面系列中学习到的技术,包括布尔逻辑、动态单元格区域、提取满足条件的数据、统计唯一值等,创建出一个解决问题的大型公式。当然,如果你不需要自动动态更新数据,完全可以使用Excel内置的高级筛选或数据透视表功能。
fanjy
2021/03/12
5.4K0
精通Excel数组公式008:数组常量
如下图1和图2所示,如果使用公式引用一列中的项目,当按F9评估其值时,会看到:在花括号内放置了一组项目,文本被添加上了引号,分号意味着跨行,且项目列使用分号。
fanjy
2020/08/31
3.2K0
精通Excel数组公式008:数组常量
精通数组公式17:基于条件提取数据(续)
创建数据提取数组公式的技巧是在公式内部创建一个“匹配记录”相对位置的数组。如下图8所示,可以看到与条件相匹配的记录的相对位置是7和10,它们将作为INDEX的row_num参数的值。
fanjy
2021/03/12
3.5K0
精通Excel数组公式020:MMULT数组函数
MMULT表示矩阵乘法(matrix multiplication)。学习过前面文章的朋友,可能已经意识到乘法矩阵在Excel公式中有很多应用。
fanjy
2021/03/12
2.5K0
精通Excel数组公式14:使用INDEX函数和OFFSET函数创建动态单元格区域
动态单元格区域是指当添加或删除源数据时,或者随着包含单元格区域的公式被向下复制时根据某条件更改,可以自动扩展或收缩的单元格区域,可以用于公式、图表、数据透视表和其他位置。
fanjy
2021/02/05
9.6K0
精通Excel数组公式025:LINEST数组函数
如果正在进行与x-y直线数据集相关的统计计算,那么一定会喜欢LINEST函数。当使用最小二乘法将数据拟合到一条直线时,LINEST函数可以进行许多统计计算。下面列出了该函数可以进行的一些统计计算:
fanjy
2021/03/26
3.4K0
精通Excel数组公式025:LINEST数组函数
精通Excel数组公式005:比较数组运算及使用一个或多个条件的聚合计算
在诸如基于条件查找最小值或最大值、计算标准偏差等情形时,Excel没有提供相应的内置函数,必须编写数组公式,其中往往涉及到在数组中使用比较运算符。
fanjy
2020/06/24
8.7K0
精通Excel数组公式006:连接数组运算
连接运算符是:&,可以将两个或多个项目连接成一个项目,这些项目可以是数字、文本(使用引号括起来)、公式结果,等等。
fanjy
2020/07/07
1.8K0
精通Excel数组公式002:谈谈公式最基本的那些事儿
任何知识和技能都有最基本的东西,熟知这些,是学习的基础,也会使学习事半功倍。下面,我们就来看看Excel公式的那些基础知识。
fanjy
2020/05/29
1.1K0
精通Excel数组公式002:谈谈公式最基本的那些事儿
精通Excel数组公式007:函数参数数组运算
下图1展示了一个使用LEN函数计算单元格中字符数的公式。LEN函数接受单个项目作为其参数text,输出单个项目作为其返回值。
fanjy
2020/07/21
1.2K0
精通Excel数组公式007:函数参数数组运算
推荐阅读
相关推荐
精通Excel数组公式004:数学数组运算
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档