SUMPRODUCT函数基础

2024-01-15 19:58
文章标签 基础 函数 sumproduct

本文主要是介绍SUMPRODUCT函数基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SUMPRODUCT函数是一个数组类型的函数,能够计算多个区域的数值相乘后之和。其语法为:

SUMPRODUCT(数组1,数组2,数组3,……)

返回数组(区域)中对应项相乘后的和。
例如下图所示的工作表数据:
sumproductsample1
要求将列A和列B中同一行的数据相乘后的结果相加,即:

A1×B1+ A2×B2+ A3×B3+…+ A10×B10

可使用如单元格C3中的公式:

=SUMPRODUCT(A1:A10,B1:B10)

如果将单元格区域A1:A10命名为“DataA”,将单元格区域B1:B10命名为“DataB”,那么可以使用公式:

=SUMPRODUCT(DataA,DataB)

说明:

  • 在SUMPRODUCT函数的参数中,数组的大小必须相等,否则将返回#NUM!错误。
  • SUMPRODUCT函数将数组中不是数字的数组元素作为0对待。

(应用)基于两个条件汇总数据
例如,下表所示的数据:
sumproductsample2
现在要求华东区域产品B的销售量,则可使用下面的公式:

=SUMPRODUCT((C2:C10)*(A2:A10=”华东”)*(B2:B10=”B”))

结果为100。
其中:

  • C2:C10为包含销售量的单元格区域
  • 通过A2:A10=”华东”产生一个数值为1,0的数组,即如果列A中的数据为华东则值为1,否则为0
  • 同理,通过B2:B10=”B”产生一个数值为1,0的数组
  • SUMPRODUCT函数将这些数组分别相乘后相加即得到结果

探讨
有时,如果不合适地应用SUMPRODUCT函数,将会得不到正确的结果。例如,下表所示数据:
sumproductsample3
现在要求华中区域与目标日时间差为负数的项目的销售额。
其中,将单元格区域“A2:A10”命名为“区域”,将单元格区域“B2:B10”命名为“销售额”,将单元格区域“C2:C10”命名为“时差”。
如果我们输入下面的公式:

=SUMPRODUCT((时差<0),(区域="华中"),销售额)

将得不到正确的结果。由于某种原因,SUMPRODUCT函数不能正确处理布尔值,因此公式无效。
下面的公式在SUMPRODUCT函数中将布尔值乘以1,将得到正确的结果:

=SUMPRODUCT(1*(时差<0),1*(区域="华中"),销售额)

也可以像上例一样,使用下面的公式:

=SUMPRODUCT(销售额*(区域=”华中”)*(时差<0))

这篇关于SUMPRODUCT函数基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/610044

相关文章

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据