第一个问题,请提前感谢您的耐心和帮助!
我有一个电子表格,其中包含课程类型(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),则仅考虑该行。但是,我无法成功地做到这一点。我的互联网搜索也没有找到足够类似的情况来寻求帮助。
由于这个项目的环境,在考虑更改整体电子表格格式或添加虚拟列进行计算之前,我对公式解决方案非常感兴趣。也就是说,我欢迎任何建议!
答案 0 :(得分:0)
不幸的是,如果公式中有计算,则使用AGGREGATE
作为grep
不会跳过错误。同样,SUM
和IFERROR
仅在阵列公式中与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))