停止具有可变开始日期的列计算,并在 Excel 中 9 行后重新启动

Stopping a column calculation with a variable start date, and restarting after 9 rows in Excel

提问人:RogerP 提问时间:6/14/2023 最后编辑:P.bRogerP 更新时间:6/15/2023 访问量:63

问:

我在 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
if 语句 变量 excel-formula 换行符 sumproduct

评论

1赞 P.b 6/14/2023
您是否希望按顺序排列日期跳过您不想显示的日期,如下所示:然后,您可以将该值更改为要重复 81 个日期序列的次数,它们之间间隔 9 天。=LET(start,DATE(2023,2,11), repeat,3, days,81, skip,9, TOCOL(start+SEQUENCE(repeat,days,0)+SEQUENCE(repeat,,0,skip)))repeat
0赞 P.b 6/14/2023
您始终可以使用上述内容来匹配:=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,""))
0赞 RogerP 6/14/2023
嗨,P.b. 感谢您的回复,我理解您回复的逻辑,但我猜是 VBA?很抱歉,我对此知之甚少,我不知道如何将其集成到我的电子表格中。我很抱歉。R
0赞 P.b 6/14/2023
它不是 VBA,而是一个公式,但您需要 Office365 才能正常工作。
0赞 RogerP 6/14/2023
啊,我有 Office 2016 ;0(

答:

0赞 P.b 6/15/2023 #1

对于较旧的 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

在这种情况下,我们需要硬核您需要使用的行数(日期)。如果要扩展需要更改的日期数(公式中使用它的两个位置),请不要忘记在前面拖动公式时锁定值。100ROW($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,
   ""))

评论

1赞 RogerP 6/15/2023
嗨,P.b,太好了,我真的很感谢你花时间尽可能清楚地解释这个过程。这帮助我理解了您的建议,谢谢。我会试一试,然后回复你。非常感谢;0)
1赞 RogerP 6/16/2023
嗨,P.b 数组函数工作出色,正如所问的那样,我以前从未涉足过数组,所以感谢您对我的启发!我可以在这里提出与此相关的进一步问题,还是需要编辑我的原始问题?
0赞 P.b 6/16/2023
请随时询问。如果它是对这一点的补充,那么它可能值得一个新问题。如果它询问有关部门的更多信息,请在此处询问。如果我的帖子回答了您的问题,您可以通过单击我的帖子旁边的帖子将该帖子标记为好答案。V
0赞 RogerP 6/17/2023
好的,TA,是否可以使用数组反转序列?即跳过 9 行,然后为接下来的 81 行进行计算,依此类推?
1赞 RogerP 6/17/2023
是的,你是对的,这只是一个想法。非常感谢您的帮助。