精华内容
下载资源
问答
  • 在 Excel 中对多行多列进行条件求和

    万次阅读 2018-12-17 03:21:08
    在 Excel 中对多行多列进行条件求和问题由来源数据格式我的解决过程用 SUMPRODUCT 函数的失败过程分析错误解决问题用 SUMPRODUCT 解决问题我在 CSDN 的第一篇博客 问题由来 前几天,一名网友在微信群里求助,说有一...

    问题由来

    前几天,一名网友在微信群里求助,说有一个表格汇总数据不会算。经过两天努力,我帮他写了一个宏,顺利完成了任务。这个按字段汇总的宏我以后再说,今天只说验算的公式。
    由于源数据比较多,出于谨慎,我需要将宏算出来的汇总表进行验算,并且最好是用一个单元格用单个公式完成对源数据的加和运算,因此想编写一个公式把源数据表所有符合条件的数据加和,再对汇总表加和,比较两个和是否一致。

    源数据格式

    源数据是由上百个结构相同的数据块组成的数据块纵列。下面展示连续的两个数据块:
    两个数据块

    每个数据块的格式如下:

    1. 总共有21行、13列;
    2. 第1行是标题,第20、21行是需要被忽略的数据,从第2行到第19行是需要汇总的数据;
    3. 所有数据块的第二列是纵向标题,每块都一样,都是18个同样次序排列的字母;
    4. 每块数据块的第一行是横向标题,此部分每个数据块都不一样,且数量有多有少;
    5. 由此可以看出,需要求和每个数据块从第2行、第3列开始到第19行、第13列的数据块内的数据;

    为什么不能直接求和

    也许有人会说,直接求 C:M 的和不就行了?还真不行。每个数据块的第20行是一个合计行,不能被计算进总数内,所以不能直接求和。而这一个合计行的业务逻辑比较奇怪,我没看出这一行数据和主体数据块的关系,至少不是主体数据块的纵向求和,否则可以用求 C:M 的和然后除以 2 的方式来求所需要的总和。

    我的解决过程

    用 SUMPRODUCT 函数的失败过程

    这个公式需求看上去一点都不难,我不想用数组公式,用 SUMPRODUCT 函数看上去应该是一个非常理想的选择。于是我写了如下的公式:

    =SUMPRODUCT(C:M,((MOD(ROW(C:M)-1,21)+1)>1)*((MOD(ROW(C:M)-1,21)+1)<20)) ​​​​
    

    看上去很完美,用 C:M 指定汇总的列区域,用 ROW 求出单元格所在行的值后用两个 MOD 指出汇总的行区域。两个参数涉及区域都是 C:M,大小完全一样,符合 SUMPRODUCT 函数对各参数之间大小完全匹配的要求。
    但是,输入之后 Excel 提示我 #VALUE!

    分析错误

    问题到底出在什么地方?
    我先构造了一个小范围的公式,即只计算一个数据块,公式如下:

    =SUMPRODUCT(C1:M21,((MOD(ROW(C1:M21)-1,21)+1)>1)*((MOD(ROW(C1:M21)-1,21)+1)<20)) ​​​​
    

    然后用公式标签页的公式求值功能对公式的运算过程进行跟踪,发现问题出在 ROW 函数身上。
    我原以为,因为数组涉及到 C:M 多列,所以按 SUMPRODUCT 函数的工作流程,应该把涉及到的每个单元格都先用 ROW 求行值,再用 MOD 函数取余以确定其在每个数据块中的位置,就是说会生成一个21行×11列的数组。但跟踪下来完全不是这样。ROW 函数偷懒了。
    ROW 看到要计算的是范围是一个 C1:M21 的方块,并没有一个单元格一个单元格去老老实实地求行值,而是把 C1:M1,C2:M2……C21:M21 这21行作为21个计算单元,只计算了21次,得出了21个结果,而不是 21×11=231 个结果,这样当然就跟 C1:M21 不匹配了。

    解决问题

    用 SUMPRODUCT 似乎走进了死胡同,我只能回头考虑用 SUM 的数组公式。一试之下,发现 SUM 比 SUMPRODUCT 果然要聪明一点,能清楚地领会我的意思。我的公式如下:

    {=SUM(((MOD(ROW(C:C)-1,21)+1)>1)*((MOD(ROW(C:C)-1,21)+1)<20)*IF(ISNUMBER(C:M),C:M,))}
    

    用了基本和上面 SUMPRODUCT 里一样的条件设置,就把和求出来了,对行值的判断还仅仅用了 C 一列。不同的是多加了一个 ISNUMBER 的判断,因为 SUM 毕竟不是 SUMPRODUCT,遇到非数值数据不会自动转化为零。

    用 SUMPRODUCT 解决问题

    那用 SUMPRODUCT 真的不能写这个公式吗?非也,经过我脑洞大开的思索,我在原来的公式里多加了一个条件判断

    C1:M1=C1:M1
    

    公式于是变成了这样:

    =SUMPRODUCT(C:M,((MOD(ROW(C:C)-1,21)+1)>1)*((MOD(ROW(C:C)-1,21)+1)<20)*(C1:M1=C1:M1))
    

    看上去是完全的废话条件,因为一个数肯定等于自身。但这个可谓是神来之笔,因为这一个多加的条件强迫 SUMPRODUCT 把参数内的单元格认真对待,横向的每一个单元格兄弟都不能被忽略,不能被第一列单元格大哥的光芒所掩盖。这样,逗号两边的两个参数所代表的数组终于得到平等,可以共同参与运算了。

    我在 CSDN 的第一篇博客

    这是我在 CSDN 的第一篇博客,见笑见笑。

    展开全文
  • shell awk 多列求和

    千次阅读 2017-04-13 09:43:34
    2016-04-12 14:05,5726,10085 2016-04-12 14:41,14628,17341 2016-04-12 14:42,19893,15488 2016-04-12 14:42,19893,7852 2016-04-12 14:43,20471,23041 这是格式化输出 如果不加\n换行,会把把结果输出到一...

    2016-04-12 14:05,5726,10085
    2016-04-12 14:41,14628,17341
    2016-04-12 14:42,19893,15488
    2016-04-12 14:42,19893,7852
    2016-04-12 14:43,20471,23041
    这是格式化输出
    这里写图片描述
    如果不加\n换行,会把把结果输出到一行,如下图

    paste -d, a.txt b.txt |awk -F"," '{s=$1+$2} {printf "%s+%s=%s,",$1,$2,s}' 
    1+10=11,2+11=13,3+12=15,4+13=17,5+14=19,6+15=21,7+16=23,8+17=25,9+18=27,10+19=29,

    2016-04-12 14:05,5726+10085=15811
    2016-04-12 14:41,14628+17341=31969
    2016-04-12 14:42,19893+15488=35381
    2016-04-12 14:42,19893+7852=27745
    2016-04-12 14:43,20471+23041=43512

    展开全文
  • MySQL对一行多列求和

    万次阅读 2016-07-11 13:20:47
    SUM函数的语法是:SELECT SUM(expression ) FROM tables WHERE predicates; 表达式可以是一个数值字段或公式。...SELECT 1+2+3……+N AS Total FROM 表 或者select SUM(group_type+group_num_d

    SUM函数的语法是: SELECT        SUM(expression )         FROM     tables     WHERE    predicates;

    表达式可以是一个数值字段或公式。

    SELECT  column1+ column1 + column1 …… + column1  AS Total  FROM   table

    展开全文
  • sql 多列求和

    千次阅读 2017-11-21 17:13:00
    相加即可注意Null不可加,先用ISNULL方法验证,设置默认值 SELECT ID, Name, Province, City, District, ISNULL(row1, 0), ISNULL(row2, 0), ISNULL(row3, 0), ...

    列相加即可
    注意Null不可加,先用ISNULL方法验证,设置默认值

    SELECT  ID,
            Name,
            Province,
            City,
            District,
            ISNULL(row1, 0),
            ISNULL(row2, 0),
            ISNULL(row3, 0),
            ISNULL(row4, 0),
            ISNULL(row5, 0) + ISNULL(row6, 0) + ISNULL(row7, 0)
            + ISNULL(row8, 0) AS 'total'
    FROM    O WITH(NOLOCK)

    转载于:https://www.cnblogs.com/Lulus/p/7874218.html

    展开全文
  • dataframe 多个列求和(很多列情况)

    千次阅读 2020-11-07 19:39:54
    你可以只需sum并设置paramaxis=1来对行进行求和,这将忽略无数字: In [91]: df = pd.DataFrame({'a': [1,2,3], 'b': [2,3,4], 'c':['dd','ee','ff'], 'd':[5,9,1]}) df['e'] = df.sum(axis=1) df Out[91]: a ...
  • 之前讲到了“Excel数值函数(4):对指定条件的单元格求和”,这是只有1个条件的情况下,对指定单元格区域的数值求和。这次说说如果有条件,怎样计算指定单元格区域的数值之和?那就是当之无愧的SUMIFS函数了。...
  • 但是sumproduct是在C:R十六中查找一个人的名字,把匹配到的行后面的U的金额相加,且存在一个问题,如果这十六中的某一行,出现个查找人的名字,那么这一行后面的数值会被累加次 很明显下面的数据想要...
  • sql数值求和

    千次阅读 2019-08-09 15:03:38
    实际 : SELECT SUM(shuliang)+sum(danjia)+sum(jine) as 单价 ,sum(danjia) as 单价, sum(jine) as...1)对列求和可以使用聚合函数sum,例如: select sum(金额)as 合计 from 表名;(不分组对整张表汇总) select...
  • 文章目录多列数值相加举例【参考资料】 多列数值相加 1:其中列1不能有别名,会报错; 2:as 可以省略。 select 列1 + 列2 as 命名 from 表名; 举例 // 查询 select 列1 主键,列2 主键数量,列3 个数 from ...
  • 在sql中有同一行的多列求和:比如表usr_table,表有四列,如下 <br />usr item1, item2, item3 <br />针对每个user对item1,item2,item3求和的sql为: "select jifen1+jifen2+jifen3 as he,...
  • 日常工作中,我们经常要用到多条件求和,方法有多种,第一类:使用基本功能来实现。主要有:筛选、分类汇总、数据透视...主要有:使用SUM函数编写的数组公式、联用SUMIF和辅助(将多条件变为单条件)、使用SUMPRODU
  • 查过sumproduct函数的使用方法,其解释为“求二个或二个以上数组的乘积之和”,如果因此就片面地理解为这与多条件求和无关,那就错了。其实呢,利用条件真假的值(“真”对应值为1,“假”对应值为0),sumproduct...
  • iamlaosong文 SUMPRODUCT函数的含义为在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和。按我的理解就是两个以上的数组乘积之和。例如,公式为:=SUMPRODUCT(A2:A4, B2:B4...1、条件求和条件区域与求...
  • linux 文件列求和

    千次阅读 2015-07-19 18:32:54
    对文件中某一进行数值求和   198 MMSGSUSE11 [wyz] :/home/wyz/perl/testcase>more tmp.txt  testAddCountryCode.AddCountryCode 5 0 0 796.28  testChcekSAGipNormal.ChcekSAGIPNormalTest 3 0 0 418....
  • Shell-计算多行数值求和

    万次阅读 2015-03-03 10:28:48
    生成文件: touch /tmp/1.log 模拟数据: echo 3 > /tmp/1.log echo 2 >> /tmp/1.log echo 1 >> /tmp/1.log 求和: cat /tmp/1.log |awk '{sum+=$1} END {print sum}'
  • sumif 根据条件求和

    2013-09-02 16:00:26
    例如,假设在含有数字的某一中,需要对大于 5 的数值求和。请使用以下公式: =SUMIF(B2:B25,">5") 在本例中,应用条件的值即要求和的值。如果需要,可以将条件应用于某个单元格区域,但却对另一个...
  • [VBA]指定列求和

    2017-07-17 16:10:00
    ##指定列求和 需求: 求和:列为“销售金额”的数值 Sub 求和()Dim i As Integer, j As IntegerFor i = 3 To 56For j = 15 To 81 Step 2Cells(i, 13) = Cells(i, 13) + Cells(i, j)Next jNext i End Sub 中间...
  • 目前table的现状 ... 但是,在实际项目中,我们可能遇到这样的需求,我们不仅需要对某一累加求和,我们可能还需要对表头的某几项进行累加求和。 原始组件对于该业务的局限性 只支持单表...
  • 今天有人问我mysql如何跨字段求和 并排序,故做此笔记,以备查看,至于字段其余数字运算类型可借此举一反三,故不详述……字段求和分组排序select pid,sum(a)+sum(b) as ab FROM `table_name` group by pid ...
  • 岁月不居,时节如流。 时光荏苒,岁月如梭。 前面两段充分体现了博...存得了不是目的,目的是处理得了,处理得快,处理过程简单,2010的时候微软便引入了Power Query插件用以提升Excel的数据获取、处理能力,20...
  • 在处理dataframe中的字段名是,发现有些字段名在处理后是重复,于是新定义了策略,对这些相同列名的字段进行求和合并 summing the duplicated columns 代码实现 #Hanle Duplicates from operator import add from ...
  • oracle中行,的转换(列求和)

    万次阅读 2016-10-10 22:27:01
    1.有些时候因为业务的需求,需要将平时在数据库中查询的的,转换为行的形式。 普通查询的结果(select t.* from table t) 业务需求的结果 2,这里我使用的是sum(),decode()函数select k.id, sum(aaa) as aaa...
  • 这是Matlab数值计算系列的第二篇文章,主要介绍求和或者求积,。 主要应对的的问题是对矩阵的每一行,或者每列求和或求积。 1.对矩阵的每一行或每一列求和。 sum_col=sum(matrix); % 返回每一的和 sum_row=...
  • Excel不同列多条件计数

    千次阅读 2013-03-08 21:26:54
    =SUMPRODUCT(($C$1:$C$10000="hete->s288c")*($H$1:$H$10000s288c")*($H$1:$H$10000 =SUMPRODUCT(($C$1:$C$100000045000)...条件求和 复制excel中的公式,而不是公式后得到的结果 假设公式在 A 选中A, 按
  • 当然,如果有很错别字,也请见谅。 问题来了: 领导总是叫我每天导出来分析,但是我们公司分析数据总是要到 大区和小区,因为我们大区和小区都有负责人,KPI考核要对应负责人,通过数据去体现问题。这一次领导...
  • 今天被提问,SUMIF的统计结果不正确,数据如下: 使用SUMIF时,公式如下: ...经过百度搜索,发现公式SUMIF条件区域行列数必须与求和区域一致 修改公式为:SUMPRODUCT((H5:H8=">200k")*(E5:G8)) 统计结果
  • Excel合并计算完成表格数据汇总求和 表格数据汇总可以使用透视表,使用函数,今天读书屋OFFICE网陈飞老师分享一个通过合并计算完成表格数据汇总方法,合并计算分为两种情况,一种情况是:个表格类别一致...
  • 本文介绍的是python中pandas.DataFrame对行与列求和及添加新行与的相关资料,下面话不说,来看看详细的介绍吧。 方法如下: 导入模块: from pandas import DataFrame import pandas as pd import numpy as np ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,704
精华内容 13,881
关键字:

多列多条件多数值求和