本文转载自公众号:Excel完美,原创作者:佛山小老鼠,本文著作权归原创作者所有,本人收藏此文仅作为学习之用,不作其他目的,如有侵权,请联系我删除。
多条件求和的8种方法
大家好,今天和大分享“多条件求和”,这是一个朋友在公众号上留言,好,满足他的要求。
想要的效果:按姓名和月份对数量进行求和
一、方法1:sumifs实现
这个函数要2007版本及以及版本才有这个函数
公式=SUMIFS($C:$C,$A:$A,$E2,$B:$B,F$1)
公式解释这个函数有多个参数,也就是说它的参数不确定
1个条件就3个参数
2个条件就5个参数
3个条件就7个参数
4个条件就9个参数
第1参数:求和区域$C:$C
第2参数:条件1所在的区域$A:$A
第3参数:条件1$E2,
第4参数:条件2所在的区域$B:$B
第5参数:条件2F$1
二、方法2:Sumproduct公式=SUMPRODUCT(($A$2:$A$11=$E2)*($B$2:$B$11=F$1)*($C$2:$C$11))
公式解释第1个条件($A$2:$A$11=$E2)和第2个条件($B$2:$B$11=F$1)相乘,得到一个新的数组{1;0;0;1;0;0;0;0;0;0}
也就是说两个条件都满足返回1,不满足的返回0
{1;0;0;1;0;0;0;0;0;0}和数量($C$2:$C$11)相乘
最后外面嵌套一个SumProdcut,这个不是数组公式,不用三键Ctrl Sihft 回车,但是SumProdcut该做的事,所以有时我称之它表里不一
当然这里的SumProduct也可以用sum函数替换,用了sum就要三键,你把公式输好,然后把光标定位到编辑里,再按三键Ctrl Sihft 回车
用sum函数的公式=SUM(($A$2:$A$11=$E2)*($B$2:$B$11=F$1)*($C$2:$C$11))
三、方法3:通过&多条件变1条件公式
=SUMPRODUCT(($A$2:$A$11&$B$2:$B$11=$E2&F$1)*($C$2:$C$11))
四、方法4:Mmult函数公式
=SUM(MMULT(N(TRANSPOSE(($A$2:$A$10=$E2)*($B$2:$B$10=F$1))),$C$2:$C$10))
公式解释先申明,这个题不要选择这种解法
如果你是学习练手mmult可以试试
Mmult这个函数有2个参数
两个参数可以是数组,单格区域
第1参数的列数必须要和第2参数的行数相等,否则报错,也就是为什么第1参数前面加了一个转置函数Transpose
不支持布尔值True,False ,所以公式通地N函数把True转为1,把False转为0
生成的一个新的数组是以第1参数的行数和第2参数的列数组成一个新的数组
如果大家想更详细深入的学习Mmult可以进入公众号往期教程有几个分享。
五、方法:Sum if公式
=SUM(IF($A$2:$A$10&$B$2:$B$10=$E2&F$1,$C$2:$C$10))
这个公式不作解释了,和前面的方法2,方法3差不多
六、方法6:数据库函数Dsum公式=DSUM(A1:C11,3,E1:F2)
公式解释Dsum函数有3个参数
第1参数:数据源
第2参数:要进行求和在数据源第几列?像vlookup第3参数
第3参数求和条件,有点像高级筛选的条件
七、数据透视表法,这个是我推荐的方法具体操作见动画
八、方法8 字典 vba数组具体效果看动画(如果数据量大,推荐此方法)
如果你的表数据量大,公式太多会卡表,建议用此方法
代码如下
Option Explicit
Sub Test()
Dim arr1, Dic, x, k, arr2(), y
Set Dic = CreateObject(‘Scripting.Dictionary’)
arr1 = Range(‘A1’).CurrentRegion
ReDim arr2(1 To UBound(arr1), 1 To UBound(arr1, 2))
For x = 2 To UBound(arr1)
If Not Dic.exists(arr1(x, 1) & arr1(x, 2)) Then
k = k 1
Dic(arr1(x, 1) & arr1(x, 2)) = k
For y = 1 To UBound(arr1, 2)
arr2(k, y) = arr1(x, y)
Next y
Else
arr2(Dic(arr1(x, 1) & arr1(x, 2)), 3) = arr2(Dic(arr1(x, 1) & arr1(x, 2)), 3) arr1(x, 3)
End If
Next x
[E1].CurrentRegion.Clear
[E1].Resize(1, UBound(arr1, 2)) = arr1
[E2].Resize(k, UBound(arr1, 2)) = arr2
[E1].CurrentRegion.Borders.LineStyle = 1
[E1].CurrentRegion.EntireColumn.AutoFit
End Sub
好了,今天我们聊到这里,大家再见290集函数案例视频售价100包含函数数组、嵌套、加权、降维等讲解525集Excel 视频售价100包括基础技巧、函数、透视表,VBA。在线网络开设的班级,常年招生函数班、VBA班;数据透视表班
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/116441.html