Google电子表格 - 日期范围内数组的总和数据与行和列匹配

时间:2017-08-14 09:08:56

标签: excel excel-formula google-sheets

我的数据如下:

enter image description here

我想总结一个符合3个条件的范围

  • 国家/地区
  • DateRange> = Date1和DateRange< = Date2

仅尝试了一个日期的索引匹配并且它有效,但是对于日期范围,公式一直给出错误。

2 个答案:

答案 0 :(得分:0)

如果您在单元格J1和K1中定义了日期范围,那么这应该有效,前提是日期具有相同的格式(所有日期或所有文本等):

=sum(INDIRECT(ADDRESS(2, MATCH(J1,B1:G1, 0)+1, 4) & ":" & REGEXEXTRACT(ADDRESS(2, MATCH(K1,B1:G1, 0)+1, 4), "[A-Z]+")))

INDIRECT()允许我们从文本中定义范围。这使用ADDRESS()和MATCH()的组合来构建范围的第一部分,并使用REGEXEXTRACT()来删除范围第二部分中的行引用。

从内部打破这一点,假设J1 = 2017-07-28而K1 = 2017-07-30,我们让第一个MATCH为B1:G1匹配内容的第二列返回值2 J1:

MATCH(J1,B1:G1, 0)

由于我们在列B开始列计数,我们需要向其添加一个,使得关联的ADDRESS评估为C2,因为函数正在查找第二行,第三列,而4表示返回相对值因此不包括$ characters:

ADDRESS(2, 2+1, 4)

第二次使用ADDRESS()和MATCH()函数在REGEXEXTRACT()中被包围以删除Row引用并按如下方式向下扩展

REGEXEXTRACT(ADDRESS(2, MATCH(K1,B1:G1, 0)+1), "[A-Z]+")

REGEXEXTRACT(ADDRESS(2, 4+1), "[A-Z]+")

REGEXEXTRACT("E2", "[A-Z]+")

如果它只返回字符A-Z的次数,那么如果ADRESS()声明为AZ2,则会返回AZ。

这给我们留下了INDIRECT(),现在变为:

INDIRECT("C2 & ":" & "E")

INDIRECT("C2:E")

允许我们将两个值匹配的范围相加。

答案 1 :(得分:0)

通过使用INDEX / MATCH查找与国家/地区匹配的行,然后使用SUMIFS汇总日期范围内的金额,可以非常轻松地完成此操作

=SUMIFS(INDEX($B$2:$H$10,MATCH(C13,$A$2:$A$10,0),0),$B$1:$H$1,">="&A13,$B$1:$H$1,"<="&B13)

enter image description here