mysql 多条件求和_多条件求和的8种方法【Excel分享】

mysql 多条件求和_多条件求和的8种方法【Excel分享】

本文转载自公众号:Excel完美,原创作者:佛山小老鼠,本文著作权归原创作者所有,本人收藏此文仅作为学习之用,不作其他目的,如有侵权,请联系我删除。

多条件求和的8种方法

171506791_1_20190921121028159

大家好,今天和大分享“多条件求和”,这是一个朋友在公众号上留言,好,满足他的要求。

想要的效果:按姓名和月份对数量进行求和

171506791_2_20190921121028238一、方法1:sumifs实现

这个函数要2007版本及以及版本才有这个函数

171506791_3_20190921121028331

公式=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))

171506791_4_20190921121028409

公式解释第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))

171506791_5_20190921121028550

三、方法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))

171506791_6_20190921121028706

公式解释先申明,这个题不要选择这种解法

如果你是学习练手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))

171506791_7_20190921121028847

这个公式不作解释了,和前面的方法2,方法3差不多

六、方法6:数据库函数Dsum公式=DSUM(A1:C11,3,E1:F2)

171506791_8_201909211210293

公式解释Dsum函数有3个参数

第1参数:数据源

第2参数:要进行求和在数据源第几列?像vlookup第3参数

第3参数求和条件,有点像高级筛选的条件

七、数据透视表法,这个是我推荐的方法具体操作见动画

171506791_9_2019092112102997

八、方法8 字典 vba数组具体效果看动画(如果数据量大,推荐此方法)

171506791_10_20190921121029253

如果你的表数据量大,公式太多会卡表,建议用此方法

代码如下

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

(0)
上一篇 2024年 6月 20日 下午11:08
下一篇 2024年 6月 20日 下午11:16

相关推荐

关注微信