如何编写一个公式,将其复制并粘贴到 LibreOffice Calc 电子表格的列中,以便每个单元格显示不同列中 7 天的总值。 A 列包含日期。有些日期有多个条目,因此位于多行;例如,第 3 行和第 3 行都有 4 月 12 日的值。E 列有每个条目的值(以千克为单位)。 F 列将包含 E 列中值的 7 天总计。因此,对于 4 月 18 日,它将添加 E 列中从 4 月 12 日第一个条目到 4 月 18 日最后一个条目的所有值。我该怎么做?
如果每个日期只有一行,这很简单。我不知道如何处理某些具有多个条目的日期,每个条目位于不同的行。
这是所需结果的图片,其中 F9 和 F10 中的值是手动计算的:
我尝试使用一些 LLM AI,其中两个建议使用 SUMIFS 函数的(不同的)公式。公式的所有变体都会返回各种错误代码:#NAME?或错误:502 或#VALUE!
当然,你可以使用类似的公式来解决问题
=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
仅当前选择 - 开
正则表达式 - 打开。
数据转换后公式会短很多
=SUMPRODUCT(SUMIFS($E$2:E10;$A$2:A10;"<="&A10;$A$2:A10+7;">"&A10))
应该注意的是,最后一个公式可以正确地处理旧数据,“像日期一样的数字”,但正确的结果只会在一个月内,并且在月份边界时,您将不可避免地得到错误的金额。