我有一个Excel电子表格,该电子表格从我需要运行计算的另一个来源导入数据。我需要使用的数据在命名范围内 - 恰好在C12:C36范围内 - 但称为“ sumdata”。

此范围内的值包含当前包括#NUM在内的许多错误!和#n/a,但可能包含其他错误。我需要总结这些值。

我了解如何执行总和公式:

=SUM(SumData)

或者

=SUM(C12:C36)

我也可以使用ifError检查错误:

=IFERROR(C12:C36, 0)

但是IfError似乎只检查了我输入的公式的当前对应行。 IE如果我的公式在D12中输入,则仅检查第C12行的错误,并返回值(如果C12包含错误,则为0)。

如果我结合了两个要做的事情:

=SUM(IFERROR(SumData,0))

我没有有效的返回值。它基本上给了我最近的相应行 - 例如:

    C      D
    -----------
12  #NUM!  
13  2      =SUM(IFERROR(SumData,0)) = 2 (I would expect this to produce 48)
14  5
15  7
16  #N/A
17  23
18  6
19  5

我究竟做错了什么?

有帮助吗?

解决方案

=SUM(IF(ISNUMBER(SumData),SumData))

作为数组公式输入... IE使用Ctrl+Shift+Enter,而不仅仅是Enter。如果正确执行,那么Excel将在公式{}周围放置卷曲括号。

其他提示

如果您倾向于添加包含错误的单元格,请尝试使用此公式:

=SUMIFS(sumrange,criteria range1,"<>"&"#NAME?",criteria range2,"<>"&"#N/A",criteria range3,"<>"&"NUM!")

由于您不知道哪个单元格存在错误,因此建议使用标准与summrange相同的范围。

不幸的是,这是IFERROR函数的记录功能,如下所示: http://office.microsoft.com/en-us/excel-help/iferror-function-ha001231765.aspx.

本质上,范围输入不会导致范围输出。相反,您可以在IfError调用发生的单元格指示的范围内获得位置的输出。这是不直觉的。

一种解决方案是插入一列以保持单个IFERROR结果,并汇总该列,如下所示。设置D列后,只需将其隐藏。

    C      D                      E
    --------------------------------------
12  #NUM!  =IFERROR(E12, 0) -> 0
13  2      =IFERROR(E13, 0) -> 2  =SUM(E12:E19) -> 48
14  5      =IFERROR(E14, 0) -> 5
15  7      =IFERROR(E15, 0) -> 7
16  #N/A   =IFERROR(E16, 0) -> 0
17  23     =IFERROR(E17, 0) -> 23
18  6      =IFERROR(E18, 0) -> 6
19  5      =IFERROR(E19, 0) -> 5

这对我有用:

=IF(SUMIFS(RANGE,CRIT-RANGE,CRITCELL)=0,NA(),SUMIFS(RANGE,CRIT-RANGE,CRITCELL))

但是我使用显示的桌子;因此,我不得不将条件格式推到它上。

如果单元格包含错误:制作字体{与背景相同的颜色}

对我来说非常好,可以很好地绘制我的图形,而无需真正显示数据(直到有人选择单元格并看到该值)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top