Excel2010中利用函数法自动表内求和

  有的时候,我们除了对数据进行总计外,还有一些表内的小项目要进行小计,如下图:


  地球人都知道用 SUM 可以求和,比如在B7单元格里输入:=SUM(B2:B6)

  按下回车即可得出结果,后面 C7:E7 的也只要向右填充或者复制 B7 粘贴过去即可。


  可是第11行呢?把 B7 的公式直接贴过去后不能用啊……

  所以,在这里不能靠一个简单的 SUM 来解决问题了,而是要用下面这个公式:

  =SUM(B$2:B6)-SUMIF($A$2:$A6,"小计",B$2:B6)*2


  这个公式其实是妙用了绝对引用与相对引用,以及 SumIf 函数。

  先看 B7 的公式:

  =SUM(B$2:B6)-SUMIF($A$2:$A6,"小计",B$2:B6)*2

  这个公式很好理解:

  SUM(B$2:B6) 就是计算 B2:B6 这五个单元格里数值的和;因为 A2:A6 里没有“小计”,所以 SumIf 部分的结果是 0;B2:B6 的和加上 0,结果正是我们所需要的。

  再看 B11 的公式,因为绝对引用不改变地址,而相对引用会让公式随着所在单元格的地址的不同而变化,在复制后原公式变成了:

  =SUM(B$2:B10)-SUMIF($A$2:$A10,"小计",B$2:B10)*2

  SUM(B$2:B10) 是计算 B2:B10 这九个单元格里数值的和,这里分成三个部分: B2:B6 即所有项目 A 的总和、B7 即 A 类小计、以及 B8:B10 即所有项目B的总和,而我们只需要第三部分:所有项目 B 的总和,前两部分需要设法减去;事实上,所有项目 A 的总和和 A 类小计是一回事,所以需要减去的,可以看成是两个 A 类小计,而 SumIf 公式,恰恰计算了 A 类小计,;B2:B10 的和减去两个 A 类小计,结果正是我们所需要的所有项目 B 的总和。

  其他的公式同理类推了。

  不过就算有了这个公式,一行一行复制粘贴也是个体力活,可以用定位法处理更快捷些:


  最后的总计,当然用=SUM(B1:B6,B8:B10……太累了,可以简化一下:

  公式:=SUM(B2:B28)/2 或者:=SUMIF($A2:$A28,"小计",B2:B28)


  效果如何自己爬进单元格试下咯^_^

时间: 2024-10-09 01:11:24

Excel2010中利用函数法自动表内求和的相关文章

WPS表格中利用函数快速分类汇总复杂数据

在实际工作中,用户经常需要对WPS数据表中的明细数据进行汇总求和,如果用户希望对如图1的复杂数据明细表中所有小计项目进行快速汇总,可能不是一件容易的事情. 图1 用户数据明细表 下面将向用户介绍如何利用WPS表格的常用函数进行快速汇总. SUM函数快速汇总 WPS表格提供的SUM函数可以对用户选择的区域一次性添加公式,因此用户毋须分别对小计.合计和总计栏目手工输入,从而达到快速求和的目的. 选择数据区域 首先用户只需要将各个小计的区域逐步选定,区域选择的最终结果如图 2所示. 步骤1 先使用鼠标

Python中利用函数装饰器实现备忘功能_python

"备忘"的定义 "memoization"(备忘)这个词是由Donald Michie在1968年提出的,它基于拉丁语单词"memorandum"(备忘录),意思是"被记住".虽然它和单词"memorization"在某种程度上有些相似,但它并不是该单词的错误拼写.实际上,Memoisation是一种用于通过计算来加速程序的技术,它通过记住输入量的计算结果,例如函数调用结果,来实现其加速目的.如果遇到相同的

mysql中利用函数与过程过滤html标签

mysql本身没有去除html代码的内置函数,但是在一些情况下,不得不在数据库层次提取一些去除了html代码的纯文本. 经过谷歌后,找到了以下两个函数,经测试,均可用. 函数1:  代码如下 复制代码 SET GLOBAL log_bin_trust_function_creators=1;   DROP FUNCTION IF EXISTS fnStripTags;   DELIMITER |   CREATE FUNCTION fnStripTags( Dirty varchar(4000)

对JavaScript的eval()中使用函数的进一步讨论_javascript技巧

var func = eval("(function(){})"); alert(typeof func); -------- 更进一步的问题是,书中对匿名和具名函数在JScript与SpiderMonkey中的表现解释得不够 清楚.好的,这篇文章就这个问题深入讨论,不单涉及书中的内容,也更深入地讲述一 下JS的解释与执行过程--其实所有的内容在书中都有涉及,但过于分散,不便于专门 地来分析一个具体问题. 首先,应该明确表达式与语句.对于JS来说,eval()总是试图执行一个语句,因此

指针-C++中利用子函数交换main()中的一个int数组的值,交换地址为什么不可?

问题描述 C++中利用子函数交换main()中的一个int数组的值,交换地址为什么不可? 某书思考题 只改动子函数 实现主函数中数组排序我写了3种子函数 注释的都是可以正常用的 最上面的不可以(排序没变)不知道是为啥(指针不是代表地址吗 既然形参无法传回那我改变地址应该也可以啊) #include<iostream>#include<iomanip>#include<cstdlib> //pauseusing namespace std;//排序不变void swap(

SQLServer中利用NTILE函数对数据进行分组的一点使用

原文:SQLServer中利用NTILE函数对数据进行分组的一点使用 本文出处:http://www.cnblogs.com/wy123/p/6908377.html    NTILE函数可以按照指定的排序规则,对数据按照指定的组数(M个对象,按照某种排序分N个组)进行分组,可以展现出某一条数据被分配在哪个组中. 不仅可以单单利用这个特性,还可以借助该特实现更加有意思的功能. NTILE的基本使用 NTILE的作用是对数据进行整体上的分组,比如有60个学生,按照成绩分成"上中下"三个级

利用VC调用动态链接库中的函数

自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DLL中.显示Windows桌面和处理用户的输入所需要的代码被存储在一个User DLL中.Windows编程所需要的大量的API函数也被包含在Kernel DLL中.在Windows操作系统中使用DLL有很多优点,最主要的一点是多个应用程序.甚至是不同

DELPHI中利用API函数实现多态FORM

实现异型FORM并不是一件难事,本文将向您介绍如何利用API函数实现圆角矩 形和椭圆形FORM,并在此基础之上探讨实现TWINcontrol类的后裔的异型的实现 . 欲改变FORM的形状,也就是实现对区域(region)的控制.在Win32 API程序 参考手册有关区域(region)的定义是这样描述的:它可以是一个矩形,多边形 ,椭圆形(或者是两者的复合,或者是更多的形状),这些都可以被填充,画图 ,翻转,结构化并可以得到焦点执行. 由定义得出结论:区域(region)是可以被改变和操纵的,依

php中利用explode函数分割字符串到数组

 这篇文章主要介绍了php中利用explode函数分割字符串到数组,需要的朋友可以参考下 分割字符串    //利用 explode 函数分割字符串到数组  代码如下: <?php  $source = "hello1,hello2,hello3,hello4,hello5";//按逗号分离字符串  $hello = explode(',',$source);    for($index=0;$index<count($hello);$index++)  {  echo $