首页 > 其他分享 >统计指定月份的总金额,用SUMPRODUCT函数快速解决!

统计指定月份的总金额,用SUMPRODUCT函数快速解决!

时间:2023-11-26 10:00:53浏览次数:35  
标签:15 函数 MONTH 数组 FALSE SUMPRODUCT 总金额

1职场实例


小伙伴们大家好,今天我们来讲解一个关于SUMPRODUCT函数解决指定月份汇总金额的职场真实案例。


如下图所示

是一张每日的产品数量单价明细表格。A列为日期,B列为数量,C列为单价,数量乘以单价即为当天的总金额,但是总金额数据在数据源中是没有体现出来的。我们想要在F2单元格汇总出E2单元格内指定的月份下所有的金额之和。

统计指定月份的总金额,用SUMPRODUCT函数快速解决!_数组



2解题思路


解决这个问题我们主要是利用SUMPRODUCT函数的原理,配合MONTH函数判断日期值,一起实现最终效果。


SUMPRODUCT函数在给定的几组数组中,把数组间对应的元素相乘,最后返回乘积之和。


SUMPRODUCT常规函数公式:

=sumproduct(数组1,数组2,数组3, ……)

数组里面的相应元素进行相乘后,再将乘积求和。


常规运算过程如下演示

=SUMPRODUCT({1;2;3},{4;5;6})

=1*4+2*5+3*6

=32


下面我们就来看一下具体操作方法。


统计指定月份的总金额,用SUMPRODUCT函数快速解决!_逻辑值_02


首先我们在F2单元格输入函数公式

=SUMPRODUCT(B2:B9,C2:C9)


这样做,我们只是将所有日期下的数量与单价进行了相乘后并相加的运算,但是忽略了指定哪个日期


SUMPRODUCT函数运算过程

B2:B9={9;2;1;4;9;3;3;3}

C2:C9={10;15;15;20;32;10;15;30}


用两个区域数组值作为SUMPRODUCT函数的两个参数,用逗号隔开:

=SUMPRODUCT({9;2;1;4;9;3;3;3},{10;15;15;20;32;10;15;30})


数组里面的相应元素执行相乘后,再将乘积求和的命令:

=9*10+2*15+1*15+4*20+9*32+3*10+3*15+3*30

=668

统计指定月份的总金额,用SUMPRODUCT函数快速解决!_逻辑值_03


如果我们想要实现指定月份下的总金额汇总,就需要再在SUMPRODUCT函数内添加一个条件判断作为参数这里用到了MONTH函数指定月份

=SUMPRODUCT(MONTH(A2:A9)=E2,B2:B9,C2:C9)


用MONTH函数强制让其等于E2单元格的数值月份,这样就得到了一个由逻辑值TRUE和FALSE组成的判断结果数组:

MONTH(A2:A9)=E2

={TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}


也就是说如果A2:A9单元格内的月份等于1月的话,返回逻辑值真值,即TRUE;如果A2:A9单元格内的月份不等于1月的话,返回逻辑值假值,即FALSE。


但是我们发现完善公式后返回的结果是错误的,这是为什么呢

统计指定月份的总金额,用SUMPRODUCT函数快速解决!_数组_04


原因就是由MONTH函数产生的由逻辑值TRUE和FALSE组成的数组元素并不能直接和后面的常量数组产生运算,需要对MONTH函数部分整体乘以1

=SUMPRODUCT((MONTH(A2:A9)=E2)*1,B2:B9,C2:C9)


MONTH函数部分整体乘以1后,变成由1和0组成的新数组,在Excel中,TRUE*1=1,FALSE*1=0,这是固定规律。

(MONTH(A2:A9)=E2)*1

={1;1;0;0;0;1;0;0}


这样SUMPRODUCT函数再次重新执行相乘后,再将乘积求和的命令:

=SUMPRODUCT({1;1;0;0;0;1;0;0},{9;2;1;4;9;3;3;3},{10;15;15;20;32;10;15;30})


得到指定的月份1月下的总金额结果150


统计指定月份的总金额,用SUMPRODUCT函数快速解决!_逻辑值_05

标签:15,函数,MONTH,数组,FALSE,SUMPRODUCT,总金额
From: https://blog.51cto.com/u_15825298/8567528

相关文章

  • 使用函数求奇数和 求成绩的最大值
    6-1使用函数求奇数和本题要求实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。函数接口定义:在这里描述函数接口。例如:inteven(intn);intOddSum(intList[],intN);其中函数even将根据用户传入的参数n的奇偶性返回相应值:当n为偶数时返回......
  • ACM常用STL函数
    max()min()找多个元素的最大值和最小值max(a,b)比较两个元素mx=max({a,b,c,d});比较多个元素lower_bound()upper_bound()寻找第序列第n小的值的地址//在a数组中查找第一个大于等于x的元素,返回该元素的地址int*p=lower_bound(a,a+n,x);//在a数组中查找第一个大于x......
  • 5.7 Windows驱动开发:取进程模块函数地址
    在笔者上一篇文章《内核取应用层模块基地址》中简单为大家介绍了如何通过遍历PLIST_ENTRY32链表的方式获取到32位应用程序中特定模块的基地址,由于是入门系列所以并没有封装实现太过于通用的获取函数,本章将继续延申这个话题,并依次实现通用版GetUserModuleBaseAddress()取远程进程中......
  • c++ 为什么引入函数对象?
    C++引入函数对象主要是因为函数对象具有以下优势:函数对象可以有自己的状态:我们可以在类中定义状态变量,这样一个函数对象在多次的调用中可以共享这个状态。但是函数调用没这种优势,除非它使用全局变量来保存状态。函数对象有自己特有的类型,而普通函数无类型可言:这种特性对......
  • 函数式编程注意点
    函数式编程&lambda表达式今天在回顾学习java动态数组的基本操作时,学到:如果测试者要拿到方法内属性时,可以用函数式编程获取。函数式编程关注:返回值和参数个数。Consumer类返回类型void,参数只有一个,调用其accept方法用来操作。{{uploading-image-867431.png(uploading...)}}......
  • 11.25-task3变量与函数
    变量与函数变量变量是一个名字,用来储存一段数据!变量的值可变化,新值会覆盖之前的值变量相当于一个标签,如a=10,在内存中找一个位置,把地址赋给了a。。命名规则数字不能开头!最好不要用保留字符作为变量名!!!!多变量赋值在进行多变量赋值时,需要将变量之间用,隔开等号右边......
  • C++回调函数的定义和调用
    文章目录一、C++回调函数1.C/C++回调函数2.普通回调3.函数指针4.C++类的静态函数作为回调函数5.类的非静态函数作为回调函数6.Lambda表达式作为回调函数7.std::funtion和std::bind的使用二、其他参考资料 一、C++回调函数C++回调函数1.C/C++回调......
  • 变量与函数
    变量与函数变量新值会覆盖旧值新值数据类型不必与旧值相同**变量是一个标签变量命名规则必须以字母或下划线开头命名可由字母、数字、下划线组成大小写敏感尽量避免使用保留字命名更新变量x=5x+=2print(x)7多变量赋值a,b,c=1,2,3#元组的解包print(f......
  • map函数用法
    map函数用法描述map()根据提供的函数对指定序列做映射fuction以每一个元素调用,并且返回每次fuction函数返回值的新列表语法map(fuction,iterable,)​函数一个或多个序列def**square(x):#计算平方数 return**x**2map(square,[1,2,3,4,5])......
  • 无涯教程-Tk - Scale部件函数
    比例小部件用于通过滑块选择数字值。scale小部件的语法如下所示-scalescaleNameoptionsScale-参数下表中列出了可用于缩放窗口小部件的选项-Sr.No.Syntax&Remark1-backgroundcolor用于设置小部件的背景颜色。2-borderwidthwidth用于在3D效果中使用边框绘......