从输入错误

时间:2018-05-09 03:26:04

标签: excel excel-formula

第一个问题,请提前感谢您的耐心和帮助!

我有一个电子表格,其中包含课程类型(A栏,例如" Lec"或" Dis"),注册号码(B栏,整数)和会话时间(栏目) C,字符串时间间隔例如" 10:00AM-01:00 PM")。

我需要将特定类型(例如" Lec")的所有类别的注册号码相加,这些类别在特定时间(例如下午3:00)之前结束。以下代码实现了:

=SUMPRODUCT(--((A2:A8="Lec")), --(TIMEVALUE(MID(B2:B8,11,5)&" "&MID(B2:B8,16,2))<=TIMEVALUE("03:00 PM")), C2:C8)

问题是某些会话时间可能是空白的,这会产生一个&#34; #VALUE!&#34;错误。最好的我可以告诉你这是因为TIMEVALUE无法接受一个空单元作为输入,所以无论何时发生它都会破坏整个事物。因此,在这种情况下,我需要忽略行,而不是进行各种其他评估。

我试图保护各种条件语句背后的TIMEVALUE内容,例如:如果时间会话长度正确(长度= 17),则仅考虑该行。但是,我无法成功地做到这一点。我的互联网搜索也没有找到足够类似的情况来寻求帮助。

由于这个项目的环境,在考虑更改整体电子表格格式或添加虚拟列进行计算之前,我对公式解决方案非常感兴趣。也就是说,我欢迎任何建议!

1 个答案:

答案 0 :(得分:0)

不幸的是,如果公式中有计算,则使用AGGREGATE作为grep 会跳过错误。同样,SUMIFERROR仅在阵列公式中与Ranges / Arrays一起正常工作,而不是在ISERROR时。除非您需要计算列,否则这是最简单的选项。

但是,一切都不会丢失!首先,我们使用SUMPRODUCT代替SUMPRODUCT*缩减为单个参数:

,

接下来,我们将此更改从=SUMPRODUCT(--(A2:A8="Lec")*--(TIMEVALUE(MID(B2:B8,11,5)&" "&MID(B2:B8,16,2))<=TIMEVALUE("03:00 PM"))*C2:C8) =SUMPRODUCT( X更改为) =SUM(IFERROR( { {1}}:

X

请记住按[Ctrl] + [Shift] + [Enter]而不是仅按[Enter]转换为Array Formula - 公式将显示在,0))