如何计算 Excel 2010 中与当前行同一周的每一行的总和?

如何计算 Excel 2010 中与当前行同一周的每一行的总和?

我有一张包含工作时长数据的 Excel 表格。我想添加一列来计算本周的总时长。例如:如果我在一周内工作了 3 天,则公式必须查找同一周的每隔一行并计算工作时长的总和。

每个表格行如下所示:

日期、从(时间)、至(时间)、休息时间、今日总计(时间)

我正在考虑这样的公式:检查当前行中的日期并获取日历周。现在循环遍历每一行并检查日历周是否等于当前行中的日历周。如果相同,则将“今日总计(时间)”添加到每周总数中。

不幸的是,我找不到每个命令。类似于 =(FOR(A2:A10)(IF....)。如果有类似局部变量的东西会很有用。我发现在 VBA 中可能可以编写更复杂的公式,但我不确定是否可以使用 VBA 计算特定的单元格值或将其用于其他用途。

答案1

你要找的公式叫做SUMIFS

我假设您想要计算今天的总数 (E),在这种情况下公式将如下所示。如果您的数据延伸到第 10 行以外,则您必须在这些单元格引用中使用更大的数字:

=SUMIFS($E$2:$E$10,$A$2:$A$10,">"&A2-weekday(A2),$A$2:$A$10,"<="&A2-weekday(A2)+7)

以下是其工作原理的详细说明。SUMIFS采用总和字段,然后采用条件范围和条件对。因此,总和范围是:

$E$2:$E$10

第一个标准范围是:

$A$2:$A$10

第一个标准是:

">"&A2-weekday(A2)

>此标准通过连接当前行日期之前的星期六对应的日期来构建大于语句。WEEKDAY给出星期几的数字(例如,星期五是 6)。因此,今天的日期减去星期几总是给出之前的星期六。

第二个条件范围与第一个相同,但是条件的构建方式不同:

"<="&A2-weekday(A2)+7

+7给出这个星期六,即下星期六之后的一周。因此,总而言之,我们将 A 列中的日期与大于上星期六且小于或等于这个星期六(即本周)的范围进行比较。

相关内容