Excel中的数组公式和函数--示例和指南

  • Share This
Michael Brown

在本教程中,你将学习什么是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在内存中存储中间结果,而不是在一个额外的列中。 所以,只需要一个数组公式和两个快速步骤。

    1. 选择一个空单元格,在其中输入以下公式。

      =sum(b2:b6*c2:c6)

    2. 按键盘快捷键CTRL + SHIFT + ENTER来完成数组公式。

      一旦你这样做了,Microsoft Excel就会用{大括号}包围这个公式,这是一个数组公式的视觉指示。

      该公式所做的是将指定数组(单元格B2至C6)中每一行的数值相乘,将小计加在一起,然后输出总和。

    这个简单的例子显示了数组公式的强大作用。 当处理成百上千行的数据时,想想在一个单元格中输入一个数组公式可以节省多少时间。

    为什么在Excel中使用数组公式?

    Excel数组公式是进行复杂计算和完成复杂任务的最方便的工具。 一个数组公式可以取代成百上千的常规公式。 数组公式非常适用于以下任务。

    • 对满足某些条件的数字进行求和,例如对某一范围内的N个最大或最小的数值进行求和。
    • 每隔一行求和,或每隔N行或列求和,如本例所示。
    • 计算指定范围内所有或某些字符的数量。 下面是一个计算所有字符的数组公式,以及另一个计算任何指定字符的公式。

    如何在Excel中输入数组公式(Ctrl + Shift + Enter)

    正如你已经知道的那样,CTRL + SHIFT + ENTER这3个键的组合是一个神奇的手势,可以将一个普通的公式变成一个数组公式。

    在Excel中输入数组公式时,有4个重要事项需要注意。

    1. 一旦你输入完公式并同时按下CTRL SHIFT ENTER键,Excel就会自动将公式包围在{大括号}之间。 当你选择这样的单元格时,你可以在公式栏中看到大括号,这给你提供了一个线索,即这里有一个阵列公式。
    2. 手动输入公式周围的大括号是不行的,你必须按Ctrl+Shift+Enter的快捷键来完成一个数组公式。
    3. 每当你编辑一个数组公式时,大括号就会消失,你必须再次按Ctrl+Shift+Enter来保存修改。
    4. 如果你忘了按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就是这样一个函数,我们将利用它对上表进行转置,即把行转换成列。

    1. 选择一个你想输出换位表的空白单元格区域。 因为我们要将行转换为列,请确保选择的行和列的数量与你的源表的列和行的数量相同。 在这个例子中,我们要选择6列和4行。
    2. 按F2进入编辑模式。
    3. 输入公式并按Ctrl + Shift + Enter 。

    在我们的例子中,公式是:。

    =transpose($a$1:$d$6)

    结果将看起来与此类似。

    这就是在Excel 2019和更早的版本中,如何将TRANSPOSE作为CSE数组公式使用。 在动态数组Excel中,这也可以作为普通公式使用。 要了解Excel中转置的其他方法,请查看本教程:如何在Excel中切换列和行。

    如何使用多单元格数组公式

    当在Excel中使用多单元格数组公式时,一定要遵循这些规则以获得正确的结果。

    1. 选择你要输出结果的单元格范围 之前 输入公式。
    2. 删除 如果是多单元格数组公式,可以选择包含它的所有单元格并按DELETE,或者在公式栏中选择整个公式,按DELETE,然后按Ctrl + Shift + Enter。
    3. 你不能编辑或移动数组公式中单个单元格的内容,也不能在多单元格数组公式中插入新单元格或删除现有单元格。 无论你何时尝试这样做,Microsoft Excel都会发出警告:" 你不能改变一个数组的一部分 ".
    4. 缩水 如果要将一个数组公式应用于更少的单元格,你需要先删除现有的公式,然后再输入一个新的公式。
    5. 拓展 一个数组公式,即应用于更多的单元格,选择所有包含当前公式的单元格和你想拥有它的空单元格,按F2切换到编辑模式,调整公式中的引用,按Ctrl + Shift + Enter更新它。
    6. 你不能在Excel表格中使用多单元格数组公式。
    7. 你应该在一个单元格范围内输入一个多单元格数组公式,其大小与公式返回的数组相同。 如果你的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数组公式的基石之一,下面的信息和提示可能有助于你以最有效的方式使用它们。

    1. 阵列中的元素常数

      一个数组常量可以包含数字、文本值、布尔值(TRUE和FALSE)和错误值,用逗号或分号分开。

      你可以输入一个整数、小数或科学符号的数值。 如果你使用文本值,它们应该像在任何Excel公式中一样用双引号(")包围。

      一个数组常量不能包括其他数组、单元格引用、范围、日期、定义名称、公式或函数。

    2. 命名阵列常量

      为了使数组常量更容易使用,可以给它一个名字。

      • 切换到 公式标签> 定义的名称 组,并点击 定义名称 或者,按Ctrl + F3并点击 新的 .
      • 键入名字在 命名
      • 指的是 框中,输入数组常量的项目,用大括号包围,前面是等号(=)。 例如:。

        ={"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" }

      • 点击 "确定 "来保存你命名的阵列并关闭窗口。

      要在工作表中输入命名的数组常量,在一行或一列中选择与数组中的项一样多的单元格,在公式栏中输入数组的名称,前面加上=符号,然后按Ctrl + Shift + Enter 。

      结果应该类似于这样。

    3. 防止错误

      如果你的阵列常数不能正常工作,请检查是否有以下问题。

      • 用适当的字符给你的数组常量元素定界--水平数组常量用逗号,垂直数组用分号。
      • 选择一个与你的数组常数中的项目数量完全匹配的单元格范围。 如果你选择更多的单元格,每个额外的单元格都会出现#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数组的高级公式实例。 请继续关注并感谢您的阅读!

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.