提问人:RogerP 提问时间:6/14/2023 最后编辑:P.bRogerP 更新时间:6/15/2023 访问量:63
停止具有可变开始日期的列计算,并在 Excel 中 9 行后重新启动
Stopping a column calculation with a variable start date, and restarting after 9 rows in Excel
问:
我在 Excel 中有一列计算,我想运行 81 行,然后不计算 9 行,然后继续计算 81 行等。 我遇到的问题是,列计算的开始时间取决于开始日期,可以是任何一天。
我正在使用 SUMPRODUCT 函数停止计算以计算非空白单元格 =SUMPRODUCT(--(LEN(C10:C90)<>0))=81,“”,??????????,C$8/2) 但我正在努力弄清楚如何再次重新启动它并在 9 行后继续,如下所示。 任何帮助都非常感谢;0)
排 | 日期 | 量 |
---|---|---|
89 | 01/05/23 | 25.00 |
90 | 02/05/23 | 25.00 |
91 | 03/05/23 | |
92 | 04/05/23 | |
93 | 05/05/23 | |
94 | 06/05/23 | |
95 | 07/05/23 | |
96 | 08/05/23 | |
97 | 09/05/23 | |
98 | 10/05/23 | |
99 | 11/05/23 | |
100 | 12/05/23 | 25.00 |
101 | 13/05/23 | 25.00 |
答:
对于较旧的 Excel,这里有两个选项:
选项 1:创建每 81 行后跳过 9 的日期列表
这可以通过日期范围的起始单元格中的以下公式来实现:
=DATE(2023,2,11)
+ROW()-1
+(INT((ROW()-1)/81)*9)
如果在 A 列(或任何其他列)的第一行中使用此选项,您可以将其向下拖动,每第 81 行之后,它将跳过 9 个数字并从那里继续。
如果您打算不使用第一行,则需要修改(对于这两种情况)。-1
在这种情况下,您不需要根据应跳过的日期计算 B 列中的值,因为我们刚刚完成了这一任务。
它将开始日期 + 当前行号减去 1 相加,并将当前行号减去 1 的整数除以 81。整数的结果(前 81 行为 0,后 81 行为 1,依此类推)乘以 9。
选项 2:检查每 81 行后跳过 9 的日期列表
请注意,这需要一个数组公式,选项 1 可能更可取。
如果我们想要 A 列中日期的完整列表并计算 81 行的值,然后跳过 9 并重复,我们可以在以下公式中使用:B1
=IF(ISNUMBER(MATCH(A1,
DATE(2023,2,11)
+ROW($1:$100)-1
+INT((ROW($1:$100)-1)/81)*9,
0)),
$C$8/2,
"")
这是一个数组公式,需要用 输入。ctrl+shift+enter
在这种情况下,我们需要硬核您需要使用的行数(日期)。如果要扩展需要更改的日期数(公式中使用它的两个位置),请不要忘记在前面拖动公式时锁定值。100
ROW($1:$100)
$
此公式检查在数组公式中创建的日期数组中是否存在 A 列中的日期值。如果是这样,它会计算,否则它显示一个空白值。$C$5/2
如果我们使用 Office 365,则可以使用以下方法创建日期序列:
=LET(start, DATE(2023,2,11),
repeat, 3,
days, 81,
skip, 9,
TOCOL(start+SEQUENCE(repeat,days,0)+SEQUENCE(repeat,,0,skip)))
这一口气溢出来了。
或者日期检查器使用:
=LET(start, DATE(2023,2,11),
repeat, 3,
days, 81,
skip, 9,
IF(ISNUMBER(XMATCH(A1:A100,
TOCOL(start+SEQUENCE(repeat,days,0)+SEQUENCE(repeat,,0,skip)))),
C8/2,
""))
评论
V
评论
=LET(start,DATE(2023,2,11), repeat,3, days,81, skip,9, TOCOL(start+SEQUENCE(repeat,days,0)+SEQUENCE(repeat,,0,skip)))
repeat
=LET(start,DATE(2023,2,11), repeat,3, days,81, skip,9,IF(ISNUMBER(XMATCH(A1:A100,TOCOL(start+SEQUENCE(repeat,days,0)+SEQUENCE(repeat,,0,skip)))),C8/2,""))