在 LibreOffice Calc 中计算 7 天的总计,其中日期可能有多个条目

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

如何编写一个公式,将其复制并粘贴到 LibreOffice Calc 电子表格的列中,以便每个单元格显示不同列中 7 天的总值。 A 列包含日期。有些日期有多个条目,因此位于多行;例如,第 3 行和第 3 行都有 4 月 12 日的值。E 列有每个条目的值(以千克为单位)。 F 列将包含 E 列中值的 7 天总计。因此,对于 4 月 18 日,它将添加 E 列中从 4 月 12 日第一个条目到 4 月 18 日最后一个条目的所有值。我该怎么做?

如果每个日期只有一行,这很简单。我不知道如何处理某些具有多个条目的日期,每个条目位于不同的行。

这是所需结果的图片,其中 F9 和 F10 中的值是手动计算的: How to get an accurate 7-day running total in column F, regardless of the number of entries (rows) per date?

我尝试使用一些 LLM AI,其中两个建议使用 SUMIFS 函数的(不同的)公式。公式的所有变体都会返回各种错误代码:#NAME?或错误:502 或#VALUE!

libreoffice cumulative-sum calc
1个回答
0
投票

当然,你可以使用类似的公式来解决问题

=IFERROR(SUMPRODUCT(SUMIFS($E$2:E10;
   DATE(LEFT($A$2:A10;4);MID($A$2:A10;5;2);RIGHT($A$2:A10;2));
     "<="&DATE(LEFT(A10;4);MID(A10;5;2);RIGHT(A10;2));
   DATE(LEFT($A$2:A10;4);MID($A$2:A10;5;2);RIGHT($A$2:A10;2))+7;
     ">"&DATE(LEFT(A10;4);MID(A10;5;2);RIGHT(A10;2))));
  "")

或类似的东西。该公式将采用 A 列中的值,将它们转换为日期值,并使用正确的日期执行进一步的条件求和。

但是,如果您只需将 A 列中的值转换为日期,您和 Calc 都会变得更加容易。

选择A列,使用查找和替换参数 找到

(\d{4})(\d\d)(\d\d)
替换
$1-$2-$3
仅当前选择 - 开 正则表达式 - 打开。

Find&Replace

数据转换后公式会短很多

=SUMPRODUCT(SUMIFS($E$2:E10;$A$2:A10;"<="&A10;$A$2:A10+7;">"&A10))

Good result

应该注意的是,最后一个公式可以正确地处理旧数据,“像日期一样的数字”,但正确的结果只会在一个月内,并且在月份边界时,您将不可避免地得到错误的金额。

© www.soinside.com 2019 - 2024. All rights reserved.