Google 表格 IF(TIMEVALUE) 函数使用范围 (ARRAYFUNCTION) 错误

问题描述 投票:0回答:1

我正在使用表单将时间信息输入到工作表中(这只是在其他计算中使用的工作表的一个方面)。我有来自存档文件的旧时间数据,该文件的时间值为持续时间,即 28:00:00 或 28 小时。输入的新数据使用开始时间、结束时间和员工人数来计算持续时间,即 8:00:00 AM - 12:00:00 PM * 10 = 40:00:00(40 小时) ) 期间。我的问题是我有这个公式

=IF(ISBLANK(I2000) + ISBLANK(J2000), N2000 + O2000, SUMPRODUCT((TIMEVALUE(J2000) - TIMEVALUE(I2000)) - IF(AND(TIMEVALUE(I2000) < TIMEVALUE("12:00 PM"), TIMEVALUE(J2000) > TIMEVALUE("12:30 PM")), 1/48, 0), H2000)))

如果输入了持续时间,此公式效果很好,可以正确计算 N + O 列中的持续时间,或者计算工作的持续时间(包括 30 分钟的休息时间,如果适用)。这对编号的行单独起作用。如果我将其调整到一个范围,我会收到错误“#VALUE error TIMEVALUE parameter “无法解析为日期/时间。”这导致我使用 ARRAYFORMULA,但我仍然收到相同的错误。这是当前的公式我有没有办法让它正常工作?我需要在数组中使用这个函数,因为它过滤数据的工作表定期按生产日期排序,并且当排序发生变化时,它不会调整该行的公式。

=ARRAYFORMULA(IF(ISBLANK(I2:I) + ISBLANK(J2:J), N2:N + O2:O, SUMPRODUCT((TIMEVALUE(J2:J) - TIMEVALUE(I2:I)) - IF(AND(TIMEVALUE(I2:I) < TIMEVALUE("12:00 PM"), TIMEVALUE(J2:J) > TIMEVALUE("12:30 PM")), 1/48, 0), H2:H)))
if-statement google-sheets time array-formulas
1个回答
0
投票

这是调整为返回多行的公式。您可以调整范围以满足您的需要。

=LET(i,I1:I, j,J1:J, n,N1:N, o,O1:O,
  ARRAYFORMULA(
    IF(LEN(TEXTJOIN(,1, i, j, n, o)),
      IF(ISBLANK(i)+ISBLANK(j), n+o,
        h*((j*1-i*1)-(i*1<0.5)*(j*1>25/48)*(1/48))),)))
© www.soinside.com 2019 - 2024. All rights reserved.