欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Office

数组公式的使用技巧助你成为一名 Excel 高级用户

程序员文章站 2022-03-14 16:01:20
要成为一名 Excel 高级用户,您需要知道如何使用数组公式,它能执行非数组公式所不能执行的计算。 本招介绍一些高级的数组公式。 示例1:对包含错误值的区域求和...

要成为一名 Excel 高级用户,您需要知道如何使用数组公式,它能执行非数组公式所不能执行的计算。

本招介绍一些高级的数组公式。

示例1:对包含错误值的区域求和

当试图对包含错误值(例如 #N/A)的区域求和时,Excel 中的 SUM 函数不再适用。本示例演示如何对包含错误的命名为“数据区”的区域中的值求和。

{=SUM(IF(ISERROR(数据区),"",数据区))}

该公式创建一个新数组,包含除错误值以外的原始值。从内层函数开始向外运算,ISERROR 函数在单元格区域 (数据区) 中搜索错误。IF 函数在指定的条件计算结果为 TRUE 时返回指定值,在计算结果为 FALSE 时返回另一个值。在此处,它为所有错误值返回空字符串(""),因为它们的计算结果为TRUE,并且返回该区域 (数据区) 中的其他值(因为这些值计算结果为 FALSE,表示它们不包含错误值)。接着 SUM 函数计算筛选出的数组的总和。

示例2:计算区域中错误值个数

本示例与上面的公式相似,但它返回名为“错值区”的区域中的错误值个数,而不是将错误值筛选掉:

{=SUM(IF(ISERROR(错值区),1,0))}

该公式创建一个数组,它为包含错误的单元格包含值 1,为不包含错误的单元格包含值0。可以简化该公式,并达到相同的结果,方法是移除 IF 函数的第三个参数,如下所示:

{=SUM(IF(ISERROR(错值区),1))}

如果未指定该参数,IF 函数在单元格不包含错误值时返回 FALSE。可以进一步简化该公式:

{=SUM(IF(ISERROR(错值区)*1))}

此公式版本可以执行计算是因为 TRUE*1=1 并且 FALSE*1=0。

示例3:条件求和

有时候需要有条件的求和。下面的数组公式仅对名为“销售量”的区域中的正值求和:

{=SUM(IF(销售量>0,销售量))}

IF 函数创建正值和 false 值数组。

还可以对满足多个条件的值求和。例如,下面的数组公式计算大于 0 并且小于等于 3 的值:

{=SUM((销售量>0)*(销售量<=3)*(销售量))}

还可以创建使用 OR 条件的数组公式。例如,可以对小于 3 和大于 4 的正值求和:

{=SUM(IF((销售量<3)*(销售量>0)+(销售量>4),销售量))}

IF 函数查找所有小于 3 和大于 4 的正值,然后将这些值传递给 SUM 函数。

示例4:计算零以外的平均值

本示例是需要对区域中的值求平均值时,如何从该区域中移除零。下面的公式使用名为“销售量”的数据区域:

{=AVERAGE(IF(销售量<>0,销售量))}

IF 函数创建不等于 0 的值数组,然后将这些值传递给 AVERAGE 函数。

示例5:计算两个单元格区域中的不同值个数

此数组公式对名为“销售量”和“上期销售量”的两个单元格区域中的值进行比较并返回它们之间不同值的个数。如果这两个区域中的内容完全相同,此公式将返回 0。要使用此公式,单元格区域必须大小相同并且包含相同的维数:

{=SUM(IF(销售量=上期销售量,0,1))}

IF 函数使用值 0 和值 1 填充数组(0 表示单元格不匹配,1 表示单元格匹配)。然后 SUM 函数返回该数组中的值的和。

示例6:查找区域中最大值的位置

下面公式返回“销售量”区域最大值的实际单元格地址:

{=ADDRESS(MIN(IF(销售量=MAX(销售量),ROW(销售量),"")), MIN(IF(销售量=MAX(销售量),COLUMN(销售量),"")))}

本公式中,IF(销售量=MAX(销售量),ROW(销售量),"")将返回最大值的行号,其它数据的行号返回为“”,运用MIN函数取出这个最大值的行号(因为其它行号都为空,只有最大值的行号返回了)。同理,MIN(IF(销售量=MAX(销售量),COLUMN(销售量),""))返回最大值的列号。