IFERROR函数如何拒绝不需要的值?
IFERROR函数如何消除不必要的值?使用公式时,我们经常会遇到这样的情况:从结果数组中移除一个值,然后将该数组传递给另一个函数。
例如,要获取除0以外的单元格区域中的最小值,可以使用数组公式:
=最小值(中频(A1:A100,A1:A10))
或者对于Excel 2010和更高版本,使用AGGREGATE函数:
=AGGREGATE(15,6,A1:A10/(A1:A100),1)
(请注意,第一个参数的值必须指定为15(SMALL),因为如果该值指定为5(MIN),则AGGREGATE函数将不接受除实际工作表单元格区域之外的任何值。但是,如果将此参数的值指定为14-19,则可以首先操作任何单元格区域,或者可以使用AGGREGATE函数中其他函数生成的数组或常量数组,这不能通过将值指定为1-13来处理。)
但是,有时包含0的数组不是简单的工作表单元格区域,而是由函数通过计算生成的数组。在这种情况下,尤其是公式相当长的时候,重复的子句会让公式变得更长,这样会让公式看起来“沉重”,让Excel做一些不必要的计算,比如:
=MIN(IF([a _非常长_公式]0、[a _非常长_公式],"")
下面是一个例子,如下图1所示:
图1
单元格H2中的公式为:
=MIN(SUMIFS(F2:F13,A2:A13,{“Mike”,“John”,“Alison”},B2:B13,“A”,C2:C13,“B”,D2:D13,“C”,E2:E13,“=”DATEVALUE(“2019/8/27”),E2:E13,“=”DATEVALUE(“2019/8/27”),E2:E13,“=”
简单解释一下这个公式是如何工作的。
根据上述结果,上述公式可转换为:
=MIN(IFERROR(1/(1/({5,0,4})),""))
转换为:
=MIN(IFERROR(1/({0.2,#DIV/0!0.25}),""))
转换为:
=MIN(IFERROR({5,#DIV/0!4},""))
可以看到,Excel转换1/#DIV/0!的结果仍然返回#DIV/0!转换为:
=MIN({5,"",4})
结果是:
四
因此,这种技术可以用来避免重复非常长的公式子句。
您也可以使用此技术来处理公式包含重复单元格路径引用的情况。例如:
=IF(VLOOKUP(A1,' c : \ Documents and settings \ Long _ file path _ name 1 \ Long _ file path _ name 2 \ Long _ file path _ name 3 \[External _ Workbook _ with _ plomaly _ Long _ name . xlsx]sheet 1!$A$1:$B$10,2,0)=0,"",VLOOKUP(A1,' c : \ document and settings \ Long _ file path _ name 1 \ Long _ file path _ name 2 \ Long _ file path _ name 3 \[External _ Workbook _ with _荒谬地_Long_Name.xlsx]Sheet1 '!1:澳元10,2,0澳元)
您可以使用以下公式来代替:
=IFERROR(1/(1/VLOOKUP(A1,' c : \ Documents and settings \ Long _ file path _ name 1 \ Long _ file path _ name 2 \ Long _ file path _ name 3 \[External _ Workbook _ with _荒谬地_ Long _ name . xlsx]sheet 1!$A$1:$B$10,2,0)),"")
除了排除零,我们还可以在很多情况下使用这种方法。我们需要做的是操纵要排除的值的公式,将其解析为0,然后将其放在IFERROR(1/(1/…)之后。例如,要获取单元格A1:A10中除3以外的最小值,可以使用数组公式:
=最小值(中频(A1:A103,A1:A10))
您也可以使用以下公式:
=MIN(IFERROR(1/1/(A 1: A10-3))3,"")
还有一个例子:
=MIN(IFERROR(POWER(SQRT(a 1: a 10),2),"")
结果与以下公式相同:
=最小值(中频(A1:A10=0,A1:A10))
返回单元格A1:A10中除负数以外的所有值的最小值。
版权声明:IFERROR函数如何拒绝不需要的值?是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。