Excel技能树系列08:公式进阶之数组公式

如果你的普通公式用的不错,那可以算作公式普通中阶高手。但是想要进阶为真正的公式高手,那么数组公式是绕不过的一座山。今天我们就来绕过这座大山,让数组公式成为我们工具箱中的一个强大工具。为了理解数组公式,我们来理解何为数组?简单的说数组就是一系列数字或者文本组合起来的一组数据。在Excel中,以下这些都算做常量数组

{2, 3, 4}

{1, "a", 4, "banana"}

{“苹果”, “梨子”}

发现了没,其实数组就是一些要么是纯数字或者纯文本,要么是文本和数字混合起来的组合。在Excel中,用大括号包裹起来,标识这是一个数组。数组公式是Excel非常强大的工具,有些你需要用普通公式好几步才能完成的工作,用数组公式一步就可以完成了。下面我们用常量数组说明如何键入一个简单点的数组公式。如下动图所示,选中A1:C1单元格,按F2进入编辑模式,键入公式"={1, 2, 3}",然后按下Ctrl + Shift + Enter完成公式录入,观察结果。因为要按下组合键Ctrl + Shift + Enter完成输入,所有数组公式又叫CSE公式

Excel技能树系列08:公式进阶之数组公式

简单数组公式

看到了没,A1:C1单元格被常量组中的数字1,2和3分别填充了。虽然很简单,但这就是一个数组公式。这下理解了如何在Excel中如何使用常量数组了吧,假设我有一个常量数组{20,30,"Lotus","天涯",123,136,28,"End"},数组里面有8个元素,并且是以英文逗号隔开的,那么可以选中同一行连续的8个单元格,按F2进入编辑模式,键入跟上面的动图中一样的公式,按Ctrl + Shift + Enter完成公式输入就是下图这种效果。

Excel技能树系列08:公式进阶之数组公式

8个元素的数组

那么用逗号隔开的常量数组可以选中同一行连续的对应个数的单元格,然后用常量数组来填充,那我要在同一列连续的几个单元格中用常量数组填充可不可以呢?当然可以,下面举例说明纵向数组。在Excel中,用分号隔开的常量数组就叫做纵向数组。比如下面这些都是纵向数组。

{2; 3; 4}

{1; "a"; "banana"}

{"苹果";“梨子”}

同样的方式键入数组公式,只是这次选的是同一列中的连续的,相对应个数的单元格。比如 下图中选中A1:A3,按F2进入编辑模式,键入公式“={"苹果"; "橘子"; "桃子"}”,按下组合键Ctrl + Shift + Enter完成输入,效果如下图所示:

Excel技能树系列08:公式进阶之数组公式

纵向数组填充


通过上面两个例子,知道了横向数组用逗号隔开,而纵向数组则是用分号隔开。那么,一片连续的单元格区域比如A1:C3,想要用一个常量数组去填充,这个常量数组是什么样子呢?其实不难,就是先把要在同一行填充的数组先用逗号隔开,要换到第二行的时候用分号隔开就行了。比如:常量数组{1, 2, 3; 4, 5, 6; 7, 8, 9},选中单元格区域A1:C3, 按F2进入编辑模式,键入公式”={1, 2, 3; 4, 5, 6; 7, 8, 9}“,按下组合键Ctrl + Shift + Enter完成输入,效果如下图所示:

Excel技能树系列08:公式进阶之数组公式

多行多列常量数组

类似{1, 2, 3; 4, 5, 6; 7, 8, 9}这样的数组也叫做二维数组,在Excel常量数组就是这三种,容易理解吧!通过上面的例子,我们明白了数组公式就是以数组为参数的公式。数组公式以数组为参数,计算结果。这个数组可以是常量数组,也可以是一片单元格区域,连续的同一行,或者同一列的多个单元格。其实在Excel数组公式中,最常用的是以连续的同一行或者同一列多个单元格作为数组公式的参数。大体来说,Excel中的数组就是连续的同一行或者同一列多个单元格,或者是一片单元格区域。理解了这点,我们开始进入实例讲解。


1、如果我要计算下面表中的销售总额,如果运用普通公式的话,则需要分别计算每一行的销售额,最后再将每一行的销售额进行汇总想加,比如下面动图演示的这样。

Excel技能树系列08:公式进阶之数组公式

普通公式计算

但是如果用数组公式的话,在D6直接键入公式”=SUM(B2:B4*C2:C4)“,同时按下组合键Ctrl + Shift + Enter完成输入,结果一步到位。发现没有?Excel在按下组合键Ctrl + Shift + Enter完成输入后自动在公式外边加了一对大括号,用来标识这是一个数组公式。上面我们讲了数组可以是同一列连续的几个单元格,这个公式中相当于是两个数组B2:B4, C2:C4中的值,分别对应相乘后再求和,一步到位。可能现在感觉不出什么,但是数据量非常大的时候,可是非常省事的哦。类似SUM函数这种输出结果只有一个的数组公式,叫做单结果数组公式。其实SUM, AVERAGE, MAX, MIN这种公式将数组当做参数的时候,结果只有一个,都是单结果数组公式

Excel技能树系列08:公式进阶之数组公式

SUM array function

2、既然有单结果数组公式,自然就有多结果数组公式喽。顾名思义,多结果数组公式就是多对多输出结果的数组公式。一步到位的计算出每一行的销售总额,可以先选中下面的D2:D4单元格区域,按F2进入编辑模式,然后键入公式"=B2:B4*C2:C4",按下组合键Ctrl + Shift + Enter完成输入,就出现了下图这样的效果。这种以数组作为参数,两个数组一一对应相乘后,将对应的结果一一放入选中的单元格区域的公式叫做多结果数组公式。两个数组最好一样大小,而且数组公式输出的单元格区域也要对应大小

Excel技能树系列08:公式进阶之数组公式

multiple results array function

下面横向的结果也是一样的,在单元格B6键入数组公式”=SUM(B2:E2*B3:E3)“,按下组合键Ctrl + Shift + Enter完成输入后计算总额,在B7:E7单元格键入数组公式”=B2:E2*B3:E3",Ctrl + Shift + Enter完成输入后计算每种产品的销售额。

Excel技能树系列08:公式进阶之数组公式

horizontal array


上面呢就基本是数组公式的基本用法了,下面举几个可能会在工作中用到的实例,加深理解,以便读者能在工作中使用数组公式。

实例A:常量数组与单元格区域的求和,如数组{20,26,23;18,27,20}与单元格区域A1:D8区域求和。

Excel技能树系列08:公式进阶之数组公式

常量数组与单元格区域求和

实例B:计算最大的N个数的总和,比如计算A1:A8最大的三个数之和。键入公式“=SUM(LARGE(A1:A8,{1,2,3}))”,按下组合键Ctrl + Shift + Enter完成输入。

Excel技能树系列08:公式进阶之数组公式

求最大的三个数之和

实例C:计算最小的N个数之和,比如计算A1:A8最小的三个数之和。键入公式“=SUM(SMALL(A1:A8,{1,2,3}))", 按下组合键Ctrl + Shift + Enter完成输入。

Excel技能树系列08:公式进阶之数组公式

求最小的三个数

实例D:转置公式TRANSPOSE,这是Excel自带的数组公式,简单的说就是把一片单元格区域中的行变成列和列变成行,也叫转置。转置时要注意选中的单元格区域,总个数要与原来的区域总单元格个数一致。也就是说选中区域的行数等于原区域的列数,而列数则等于行数。记得按Ctrl + Shift + Enter完成输入哦。该数组函数功能如下图所示:

Excel技能树系列08:公式进阶之数组公式

转置数组函数


就举这几个例子吧,更多的用法在理解了数组公式是以数组作为参数输出结果的公式,可以输出一个结果,也可以输出多个结果。一般最常用的是SUM, AVERAGE, COUNTIFS等函数以数组作为参数输出一个自己想要的结果。学会了数组公式,原本需要多个基本公式完成的结果就可以一步到位了。要注意的是数组公式要按下组合键Ctrl + Shift + Enter完成输入,修改数组公式也要按下组合键Ctrl + Shift + Enter完成修改,这点特别重要。还有就是就是多对多输出的公式,一定要选好对应的足够多的单元格,本篇就讲这么多,实践方能掌握数组公式,后面就尽情的享受数组公式带给你的便利吧。下一篇就开始讲一些常用的宏代码了,当然假定读者没有任何编程基础。这些代码只需要复制粘贴就可以使用了。