我的数据如下:
我想总结一个符合3个条件的范围
仅尝试了一个日期的索引匹配并且它有效,但是对于日期范围,公式一直给出错误。
答案 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)