戴夫(Dave)试图创建一个SUMIFS公式,该公式以年为标准,以周数为标准。例如,这将使他能够汇总上一年中特定星期的所有值。周数标准需要基于当前日期所在的周数。因此,如果今天在第3周内,则公式需要包括他指定的任何年份的第1、2和3周。戴夫(Dave)肯定有一种方法可以做到这一点,但是他找不到在SUMIFS中表达它的正确方法。

使用SUMIFS工作表功能,重要的是要准确了解该功能需要作为参数。当使用两个条件(如Dave想要做的-年和周的数字)时,基于SUMIFS的公式的语法应如下所示:

=SUMIFS(values_to_sum, years_to_compare, year_criterion, weeks_to_compare, week_criterion)

在Dave的描述中,他所拥有的是一系列日期和与这些日期相关的一系列值。 values_to_sum参数显然来自Dave的那些值,但是years_to_compare和weeks_to_compare在他的数据中不存在。因此,必须在帮助器列中创建它们。

假设A列包含Dave的原始日期,B列包含与那些日期关联的值。在C列中,可以使用单元格C2中的以下公式创建第一个帮助者列:

=YEAR(A2)

假设第1行包含数据列的标题。第二个辅助列的公式位于单元格D2中:

=WEEKNUM(A2)

向下复制这些公式,以使A列中出现的每个日期都有一个关联的年和周号。有了这些帮助器列,您便拥有了使用上述SUMIFS函数所需的所有数据。您仍然没有什么指示您要从值中提取哪一年。通过在F2单元格中放置一年,可以轻松地解决此问题。现在,所请求的公式将如下所示:

=SUMIFS(B:B,C:C,F2,D:D,"<="&WEEKNUM(TODAY()))

如果将此公式与之前提供的语法示例进行比较,则会注意到您具有values_to_sum(B:B),years_to_compare(C:C),year_criterion(F2),weeks_to_compare(D:D)和最后是week_criterion。这最后一个元素需要一点解释。看起来像这样:

"<="&WEEKNUM(TODAY())

由于WEEKNUM函数返回的是适合今天(在这种情况下)今天日期的星期几,因此它可能返回类似“ 7”的内容。因此,week_criterion最终看起来像这样:

"<=7"

这意味着SUMIFS将仅考虑数据中小于或等于7的那些星期数。

您可能想知道是否可以摆脱帮助器列。您不能使用SUMIFS这样做。原因是因为该函数期望进行比较的数据范围,并且这些数据范围是作为C和D列中公式的结果而计算的。

作为使用此公式的最后警告,您应该准确了解如何计算周数。在本文的示例中,在D列和SUMIFS公式中都使用了最简单的WEEKNUM函数版本。 WEEKNUM可以使用一些参数来调整其工作方式。在某些情况下,您可能想计算一个ISO周数。这些提示中提供了有关WEEKNUM和ISO周号的更多信息:

http://excelribbon.tips.net/T007804 http://excelribbon.tips.net/T007847

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12964)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。