Table of contents
在本教程中,你将学习什么是Excel数组公式,如何在工作表中正确输入,以及如何使用数组常数和数组函数。
Excel中的数组公式是一个非常强大的工具,也是最难掌握的工具之一。 一个数组公式可以进行多种计算,并取代成千上万的常规公式。 而90%的用户仍然没有在他们的工作表中使用过数组函数,只是因为他们害怕开始学习它们。
事实上,数组公式是最令人困惑的Excel功能之一。 本教程的目的是使学习曲线尽可能地简单和顺利。
什么是Excel中的数组?
在我们开始学习数组函数和公式之前,让我们先弄清楚 "数组 "一词的含义。 从本质上讲,数组是一个项目的集合。 这些项目可以是文本或数字,它们可以位于单行或单列,也可以位于多行和多列。
例如,如果你把你的每周杂货清单放到Excel数组格式中,它将看起来像。
{"牛奶"、"鸡蛋"、"黄油"、"玉米片"}。
然后,如果你选择A1到D1单元格,在公式栏中输入上述数组,前面加一个等号(=),然后按CTRL + SHIFT + ENTER键,你会得到以下结果。
你刚才所做的是创建一个一维水平数组。 到目前为止没有什么可怕的,对吗?
什么是Excel中的数组公式?
数组公式和普通公式的区别在于,数组公式处理的是几个数值,而不是只有一个。 换句话说,Excel中的数组公式会评估数组中的所有单个数值,并根据公式中表达的条件对一个或几个项目进行多次计算。
数组公式不仅可以同时处理几个值,还可以同时返回几个值。 所以,数组公式返回的结果也是一个数组。
阵列公式在所有版本的Excel 2019、Excel 2016、Excel 2013、Excel 2010、Excel 2007和更低版本中都可用。
而现在,似乎是你创建第一个数组公式的合适时机。
Excel数组公式的简单例子
假设你在B列有一些商品,它们的价格在C列,你想计算所有销售额的总和。
当然,没有什么可以阻止你在每一行中先计算小计,比如说 =B2*C2
然后将这些数值相加。
然而,一个数组公式可以让你免去那些额外的击键,因为它让Excel在内存中存储中间结果,而不是在一个额外的列中。 所以,只需要一个数组公式和两个快速步骤。
- 选择一个空单元格,在其中输入以下公式。
=sum(b2:b6*c2:c6)
- 按键盘快捷键CTRL + SHIFT + ENTER来完成数组公式。
一旦你这样做了,Microsoft Excel就会用{大括号}包围这个公式,这是一个数组公式的视觉指示。
该公式所做的是将指定数组(单元格B2至C6)中每一行的数值相乘,将小计加在一起,然后输出总和。
这个简单的例子显示了数组公式的强大作用。 当处理成百上千行的数据时,想想在一个单元格中输入一个数组公式可以节省多少时间。
为什么在Excel中使用数组公式?
Excel数组公式是进行复杂计算和完成复杂任务的最方便的工具。 一个数组公式可以取代成百上千的常规公式。 数组公式非常适用于以下任务。
- 对满足某些条件的数字进行求和,例如对某一范围内的N个最大或最小的数值进行求和。
- 每隔一行求和,或每隔N行或列求和,如本例所示。
- 计算指定范围内所有或某些字符的数量。 下面是一个计算所有字符的数组公式,以及另一个计算任何指定字符的公式。
如何在Excel中输入数组公式(Ctrl + Shift + Enter)
正如你已经知道的那样,CTRL + SHIFT + ENTER这3个键的组合是一个神奇的手势,可以将一个普通的公式变成一个数组公式。
在Excel中输入数组公式时,有4个重要事项需要注意。
- 一旦你输入完公式并同时按下CTRL SHIFT ENTER键,Excel就会自动将公式包围在{大括号}之间。 当你选择这样的单元格时,你可以在公式栏中看到大括号,这给你提供了一个线索,即这里有一个阵列公式。
- 手动输入公式周围的大括号是不行的,你必须按Ctrl+Shift+Enter的快捷键来完成一个数组公式。
- 每当你编辑一个数组公式时,大括号就会消失,你必须再次按Ctrl+Shift+Enter来保存修改。
- 如果你忘了按Ctrl+Shift+Enter,你的公式会像普通公式一样,只处理指定数组中的第一个值。
因为所有的Excel数组公式都需要按Ctrl + Shift + Enter键,所以它们有时被称为 CSE公式 .
使用F9键来评估数组公式的部分内容
在Excel中使用数组公式时,你可以观察它们是如何计算和存储它们的项目(内部数组)以显示你在单元格中看到的最终结果的。 要做到这一点,在一个函数的括号内选择一个或几个参数,然后按F9键。 要退出公式评估模式,按Esc键。
在上面的例子中,为了查看所有产品的小计,你选择B2:B6*C2:C6,按F9,得到如下结果。
注意:请注意,在按下F9键之前,你必须选择公式的某些部分,否则F9键将直接用计算值替换你的公式。
Excel中的单单元格和多单元格数组公式
Excel数组公式可以在单个单元格或多个单元格中返回结果。 在一个单元格范围内输入的数组公式被称为 多细胞公式 驻留在单个单元格中的数组公式被称为 单细胞公式 .
有几个Excel数组函数被设计用来返回多单元数组,例如TRANSPOSE、TREND、FREQUENCY、LINEST等。
其他函数,如SUM、AVERAGE、AGGREGATE、MAX、MIN,通过使用Ctrl + Shift + Enter,在单个单元格中输入时可以计算数组表达式。
下面的例子演示了如何使用单单元和多单元的阵列公式。
例1.一个单细胞阵列公式
假设你有两列列出了在2个不同月份售出的商品数量,比如说B列和C列,你想找到最大的销售增长。
通常情况下,你会添加一个额外的列,比如D列,用一个公式来计算每个产品的销售变化,如 =C2-B2
,然后在该附加列中找到最大值 =MAX(D:D)
.
数组公式不需要额外的列,因为它完美地将中间结果存储在内存中。 因此,你只需输入以下公式并按Ctrl + Shift + Enter 。
=max(c2:c6-b2:b6)
例2.Excel中的多单元格数组公式
在前面的SUM例子中,假设你必须从每笔销售中支付10%的税款,你想用一个公式计算每个产品的税额。
选择空单元格区域,如D2:D6,并在公式栏中输入以下公式。
=b2:b6 * c2:c6 * 0.1
一旦你按下Ctrl + Shift + Enter ,Excel将在所选区域的每个单元格中放置一个数组公式的实例,你将得到以下结果。
例3.使用Excel数组函数返回一个多单元格数组
如前所述,Microsoft Excel提供了一些所谓的 "数组函数",专门用于处理多单元格数组。 TRANSPOSE就是这样一个函数,我们将利用它对上表进行转置,即把行转换成列。
- 选择一个你想输出换位表的空白单元格区域。 因为我们要将行转换为列,请确保选择的行和列的数量与你的源表的列和行的数量相同。 在这个例子中,我们要选择6列和4行。
- 按F2进入编辑模式。
- 输入公式并按Ctrl + Shift + Enter 。
在我们的例子中,公式是:。
=transpose($a$1:$d$6)
结果将看起来与此类似。
这就是在Excel 2019和更早的版本中,如何将TRANSPOSE作为CSE数组公式使用。 在动态数组Excel中,这也可以作为普通公式使用。 要了解Excel中转置的其他方法,请查看本教程:如何在Excel中切换列和行。
如何使用多单元格数组公式
当在Excel中使用多单元格数组公式时,一定要遵循这些规则以获得正确的结果。
- 选择你要输出结果的单元格范围 之前 输入公式。
- 拟 删除 如果是多单元格数组公式,可以选择包含它的所有单元格并按DELETE,或者在公式栏中选择整个公式,按DELETE,然后按Ctrl + Shift + Enter。
- 你不能编辑或移动数组公式中单个单元格的内容,也不能在多单元格数组公式中插入新单元格或删除现有单元格。 无论你何时尝试这样做,Microsoft Excel都会发出警告:" 你不能改变一个数组的一部分 ".
- 拟 缩水 如果要将一个数组公式应用于更少的单元格,你需要先删除现有的公式,然后再输入一个新的公式。
- 拟 拓展 一个数组公式,即应用于更多的单元格,选择所有包含当前公式的单元格和你想拥有它的空单元格,按F2切换到编辑模式,调整公式中的引用,按Ctrl + Shift + Enter更新它。
- 你不能在Excel表格中使用多单元格数组公式。
- 你应该在一个单元格范围内输入一个多单元格数组公式,其大小与公式返回的数组相同。 如果你的Excel数组公式产生的数组大于所选范围,多余的值将不会出现在工作表中。 如果公式返回的数组小于所选范围,#N/A错误将出现在多余的单元格中。
如果你的公式可能会返回一个元素数量不定的数组,请在一个等于或大于公式返回的最大数组的范围内输入,并将你的公式包裹在IFERROR函数中,如本例所示。
Excel数组常量
在Microsoft Excel中,数组常量只是一组静态值。 当你把一个公式复制到其他单元格或数值时,这些值永远不会改变。
在本教程的一开始,你已经看到了一个从杂货清单中创建数组常数的例子。 现在,让我们看看还有哪些数组类型,以及如何创建它们。
存在3种类型的阵列常数。
1.水平阵列常数
一个水平数组常量驻留在一个行中,要创建一个行数组常量,输入由逗号分隔的数值,然后用大括号括起来,例如{1,2,3,4}。
注意:当创建一个数组常数时,你应该手动输入开头和结尾的括号。
要在电子表格中输入一个水平阵列,选择一行中相应数量的空白单元格,输入公式 ={1,2,3,4}
在公式栏中,按Ctrl + Shift + Enter。 结果将类似于这样。
正如你在截图中看到的,Excel将一个数组常数包裹在另一组大括号中,就像你输入一个数组公式时一样。
2.垂直阵列常数
一个垂直数组常量驻留在一列中,你创建它的方式与水平数组相同,唯一不同的是你用分号来限定项目,比如说。
={11; 22; 33; 44}
3.二维阵列常数
要创建一个二维数组,你要用分号来分隔每一行,用逗号来分隔每一列数据。
={"a", "b", "c"; 1, 2, 3}.
使用Excel数组常量
数组常量是Excel数组公式的基石之一,下面的信息和提示可能有助于你以最有效的方式使用它们。
- 阵列中的元素常数
一个数组常量可以包含数字、文本值、布尔值(TRUE和FALSE)和错误值,用逗号或分号分开。
你可以输入一个整数、小数或科学符号的数值。 如果你使用文本值,它们应该像在任何Excel公式中一样用双引号(")包围。
一个数组常量不能包括其他数组、单元格引用、范围、日期、定义名称、公式或函数。
- 命名阵列常量
为了使数组常量更容易使用,可以给它一个名字。
- 切换到 公式标签> 定义的名称 组,并点击 定义名称 或者,按Ctrl + F3并点击 新的 .
- 键入名字在 命名
- 在 指的是 框中,输入数组常量的项目,用大括号包围,前面是等号(=)。 例如:。
={"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" }
- 点击 "确定 "来保存你命名的阵列并关闭窗口。
要在工作表中输入命名的数组常量,在一行或一列中选择与数组中的项一样多的单元格,在公式栏中输入数组的名称,前面加上=符号,然后按Ctrl + Shift + Enter 。
结果应该类似于这样。
- 防止错误
如果你的阵列常数不能正常工作,请检查是否有以下问题。
- 用适当的字符给你的数组常量元素定界--水平数组常量用逗号,垂直数组用分号。
- 选择一个与你的数组常数中的项目数量完全匹配的单元格范围。 如果你选择更多的单元格,每个额外的单元格都会出现#N/A错误。 如果你选择更少的单元格,只有数组的一部分会被插入。
在Excel公式中使用数组常数
现在你已经熟悉了数组常数的概念,让我们看看如何使用数组信息式来解决你的实际任务。
例1.一个范围内的N个最大/最小的数字之和
你首先创建一个垂直数组常数,包含你想求和的数字,例如,如果你想把一个范围内最小或最大的3个数字相加,数组常数就是{1,2,3}。
然后,你采取LARGE或SMALL函数,在第一个参数中指定整个单元格范围,并在第二个参数中包括数组常数。 最后,将其嵌入SUM函数中,像这样。
最大的3个数字之和。 =SUM(LARGE(range, {1,2,3})
最小的3个数字之和。 =SUM(SMALL(range, {1,2,3})
不要忘记按Ctrl + Shift + Enter,因为你正在输入一个数组公式,你将得到以下结果。
以类似的方式,你可以计算一个范围内N个最小或最大值的平均值。
前3个数字的平均值。 =AVERAGE(LARGE(range, {1,2,3})
底部3个数字的平均数。 =AVERAGE(SMALL(range, {1,2,3}))
例2.用数组公式计算有多个条件的单元格
假设,你有一个订单列表,你想知道某个卖家卖出了多少次指定的产品。
最简单的方法是使用带有多个条件的COUNTIFS公式。 但是,如果你想包括许多产品,你的COUNTIFS公式可能会变得太大。 为了使它更紧凑,你可以将COUNTIFS与SUM一起使用,并在一个或几个参数中包含一个数组常数,例如。
=SUM(COUNTIFS(range1, "criteria1", range2, {"criteria1", "criteria2"})
真正的公式可能看起来如下。
=SUM(COUNTIFS(B2:B9, "sally", C2:C9, {"apples", "lemons"})
我们的样本数组只包含两个元素,因为目标是演示方法。 在你真正的数组公式中,你可以根据你的业务逻辑需要包含尽可能多的元素,只要公式的总长度在Excel 2019 - 2007中不超过8192个字符(在Excel 2003及以下版本中为1024个字符),并且你的计算机有足够的能力处理大型数组。 请更多细节请参见数组公式的限制。
这里有一个高级数组公式的例子,可以找到一个表中所有匹配值的总和:SUM和VLOOKUP与一个数组常数。
Excel数组公式中的AND和OR运算符
数组运算符告诉公式你想如何处理数组--使用AND或OR逻辑。
- AND操作符是星号(*),是乘法符号。 它指示Excel在所有条件评估为TRUE时返回TRUE。
- OR操作符是加号(+),如果一个给定表达式中的任何条件评估为 "true",则返回 "true"。
带有AND运算符的数组公式
在这个例子中,我们找到了销售人员所在的销售总额。 邓小平 而且该产品是 苹果 :
=SUM((A2:A9="迈克") * (B2:B9="苹果") * (C2:C9)
或
=SUM(IF((A2:A9="麦克")*(B2:B9="苹果")), (C2:C9))
从技术上讲,这个公式将三个数组中的元素在相同的位置相乘。 前两个数组由TRUE和FALSE值表示,这是A2:A9与Mike "和B2:B9与 "Apples "比较的结果。 第三个数组包含C2:C9范围内的销售数字。 像任何数学运算一样,乘法将TRUE和FALSE分别转换为1和0。 而且因为乘以0总是得到0,当两个条件都不满足时,得到的数组为0。 如果两个条件都满足,第三个数组中的相应元素会进入最后的数组(例如1*1*C2=10)。 所以,乘法的结果是这个数组:{10;0;0;30;0;0;0;0}。 最后,SUM函数将数组的元素加起来,返回结果为40。
Excel数组公式中的OR运算符
下面的数组公式带有OR运算符(+),将所有销售人员是迈克或产品是的销售加起来。 苹果。
=SUM(IF((A2:A9="Mike") + (B2:B9="Apples")), (C2:C9))
在这个公式中,你将前两个数组的元素相加(这是你要测试的条件),如果至少有一个条件评估为TRUE,则得到TRUE(>0);如果所有条件评估为FALSE,则得到FALSE(0)。 然后,IF检查加法的结果是否大于0,如果是,SUM将第三个数组(C2:C9)的相应元素加起来。
提示:在现代版本的Excel中,没有必要为这种任务使用数组公式--一个简单的SUMIFS公式就能完美地处理它们。 尽管如此,数组公式中的AND和OR运算符可能会在更复杂的情况下被证明是有帮助的,更不用说是非常好的思维体操了 :)
Excel数组公式中的双单数运算符
如果你曾经在Excel中使用过数组公式,你有可能遇到过一些含有双破折号(--)的公式,你可能想知道它的用途。
双重破折号,在技术上被称为 双重单项运算符。 用于将一些表达式返回的非数字布尔值(TRUE / FALSE)转换成数组函数可以理解的1和0。
下面的例子希望能让你更容易理解。 假设你在A列有一个日期列表,你想知道有多少日期发生在一月,不管是哪一年。
下面的公式会有很好的效果。
=SUM(--(MONTH(A2:A10)=1))
由于这是一个Excel数组公式,记得要按Ctrl + Shift + Enter来完成。
如果你对其他月份感兴趣,用相应的数字代替1。 例如,2代表2月,3代表3月,以此类推。 为了使公式更加灵活,你可以在某些单元格中指定月份编号,如截图中所示。
现在,让我们分析一下这个数组公式是如何工作的。 MONTH函数返回A2到A10单元格中每个日期的月份,用一个序号表示,产生数组{2;1;4;2;12;1;2;12;1}。
之后,数组中的每个元素都会与单元格D1中的值进行比较,在本例中是数字1。 比较的结果是一个布尔值TRUE和FALSE的数组。 正如你所记得的,你可以选择一个数组公式的某一部分,然后按F9查看该部分相当于什么。
最后,你必须将这些布尔值转换为SUM函数可以理解的1和0。 这就是需要双单数运算符的原因。 第一个单数将TRUE/FALSE分别胁迫为-1/0。 第二个单数将这些值否定,即反转符号,将它们变成+1和0,这是大多数Excel函数可以理解和处理的。 如果你删除双单数从上述公式中,它不会工作。
我希望这个简短的教程能对你掌握Excel数组公式有所帮助。 下周,我们将继续介绍Excel数组的高级公式实例。 请继续关注并感谢您的阅读!