如何总和包含错误的命名值范围?
-
12-10-2019 - |
题
我有一个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))
但是我使用显示的桌子;因此,我不得不将条件格式推到它上。
如果单元格包含错误:制作字体{与背景相同的颜色}
对我来说非常好,可以很好地绘制我的图形,而无需真正显示数据(直到有人选择单元格并看到该值)。