基于日期区间与多文本条件的Excel求和计算问询
基于日期区间与多文本条件的Excel求和计算问询
嗨,我来帮你搞定这个多条件求和的需求!根据你的描述,我们需要同时满足日期区间、特定名称两个维度的条件来对金额列求和,下面给你两种常用的解决方案:
方法一:使用SUMIFS+数组(推荐,更直观)
SUMIFS是Excel专门用于多条件求和的函数,结合数组可以一次性匹配多个名称条件,公式如下:
=SUM(SUMIFS(U3:U8, S3:S8, ">="&DATE(2018,4,1), S3:S8, "<="&DATE(2019,3,31), T3:T8, {"Aman","Dell","Ivan"}))
公式拆解:
U3:U8:我们要求和的目标金额列S3:S8, ">="&DATE(2018,4,1):第一个条件——日期列必须大于等于2018年4月1日(用DATE函数构建日期能避免格式识别错误,比直接写文本日期更可靠)S3:S8, "<="&DATE(2019,3,31):第二个条件——日期列必须小于等于2019年3月31日T3:T8, {"Aman","Dell","Ivan"}:第三个条件——描述列必须是数组里的三个名称之一- 外层的
SUM:因为SUMIFS会针对每个名称返回单独的求和结果,用SUM把这三个结果汇总成最终总和
方法二:使用SUMPRODUCT函数
SUMPRODUCT通过逻辑判断的乘积来实现多条件筛选,适合习惯用数组逻辑的用户,公式如下:
=SUMPRODUCT((U3:U8)*(S3:S8>=DATE(2018,4,1))*(S3:S8<=DATE(2019,3,31))*(ISNUMBER(MATCH(T3:T8,{"Aman","Dell","Ivan"},0))))
公式拆解:
(U3:U8):目标金额列(S3:S8>=DATE(2018,4,1))和(S3:S8<=DATE(2019,3,31)):日期区间的逻辑判断,符合条件返回TRUE(转成数值1),不符合返回FALSE(转成数值0)(ISNUMBER(MATCH(T3:T8,{"Aman","Dell","Ivan"},0))):判断描述列内容是否在指定名称列表里,匹配成功返回TRUE,否则FALSE- SUMPRODUCT会把所有逻辑判断的结果和金额相乘,最后求和——只有当所有条件都满足时,乘积才是金额本身,否则为0,最终得到符合所有条件的金额总和
小提示:
如果你的Excel版本是365/2021这类支持动态数组的版本,方法一的公式直接回车就能生效;如果是旧版本,输入公式后需要按Ctrl+Shift+Enter作为数组公式执行。
备注:内容来源于stack exchange,提问作者Renu




