EXCEL如何在自动筛选状态下对可见的相邻单元格求和?

有一张流水表,比如:C列是姓名,E列是收入或者支出,F列是余额。这样排列下来的表格,在余额栏是即时的全部余额,比如在F5输入的公式为:=F4+E5。如果在自动筛选时,比如只选取“张三”,然后在余额栏显示的是他的即时余额呢?
希望达到以上效果,请各位指教。

一、这要用到SUBTOTAL函数。

比如要计算筛选后A列可见单元格的数字和值,则公式可以写成

=SUBTOTAL(109,A:A)

 

二、SUBTOTAL函数的定义:

返回列表或数据库中的分类汇总。通常,使用“数据”菜单中的“分类汇总”命令可以容易地创建带有分类汇总的列表。一旦创建了分类汇总,就可以通过编辑 SUBTOTAL 函数对该列表进行修改。

语法

SUBTOTAL(function_num, ref1, ref2, ...)

Function_num    为 1 到 11(包含隐藏值)或 101 到 111(忽略隐藏值)之间的数字,指定使用何种函数在列表中进行分类汇总计算。

Ref1, ref2,   为要进行分类汇总计算的 1 到 29 个区域或引用。

说明

    如果在 ref1, ref2,… 中有其他的分类汇总(嵌套分类汇总),将忽略这些嵌套分类汇总,以避免重复计算。

    当 function_num 为从 1 到 11 的常数时,SUBTOTAL 函数将包括通过“格式”菜单的“行”子菜单下面的“隐藏”命令所隐藏的行中的值。当您要分类汇总列表中的隐藏和非隐藏值时,请使用这些常数。当 function_num 为从 101 到 111 的常数时,SUBTOTAL 函数将忽略通过“格式”菜单的“行”子菜单下面的“隐藏”命令所隐藏的行中的值。当您只分类汇总列表中的非隐藏数字时,使用这些常数。

    SUBTOTAL 函数忽略任何不包括在筛选结果中的行,不论使用什么 function_num 值。

    SUBTOTAL 函数适用于数据列或垂直区域。不适用于数据行或水平区域。例如,当 function_num 大于或等于 101 时需要分类汇总某个水平区域时,例如 SUBTOTAL(109,B2:G2),则隐藏某一列不影响分类汇总。但是隐藏分类汇总的垂直区域中的某一行就会对其产生影响。

    如果所指定的某一引用为三维引用,函数 SUBTOTAL 将返回错误值 #VALUE!。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-23
可以加一列做出各人的余额
如在G2输入公式
=IF(C2="","",SUMIF(C$2:C2,C2,F$2:F2))
下拉
只要对C列自动筛选,选择“张三”
即可在G列显示他的即时余额或者不用筛选,用SUMIF=SUMIF(C:C,"张三",F:F)INDEX函数即可
第2个回答  推荐于2017-09-06
可以加一列做出各人的余额
如在G2输入公式
=IF(C2="","",SUMIF(C$2:C2,C2,F$2:F2))
下拉
只要对C列自动筛选,选择“张三”
即可在G列显示他的即时余额追问

请问样可以解决这问题??

追答

D2输入公式
=IF(A2="","",SUMIF(A$2:A2,A2,C$2:C2))
下拉
隐藏C列
看你的A列已经自动筛选过了的,选择“张三”
即可得图中右边的效果

本回答被提问者采纳
第3个回答  2012-12-23
不用筛选,用SUMIF
=SUMIF(C:C,"张三",F:F)追问

我不是要最后的答案,我是要流水表,是几个混记的。然后希望在筛选状态下能看出每一个人的收支状况和余额,不是最终的余额,而是每一笔的明细。也就是说在不筛选的状态下,能看出整个的明细,而在筛选的状态下,能看出每个人的明细。

追答

INDEX函数即可

追问

举例说吧,F5和F9单元格,没筛选的情况下,F5它的值为F4+E5,F9的值为F8+E9。筛选后,F5上面的一格是F2,我希望在F5单元格的值为F2+E5。F9上面的一格是F5,我希望这的值是F5+E9。

追答

根据图片,用INDEX函数

不需要筛选

看下动画,如果是你需要的,发你实际的表

306212368

追问

不好意思,按你这种做法,最后得出的张三的流水表结果是错误的。你G列结果是C列中张三消费后的结果 而这个结果是是张三、李四同时消费的结果,我需要的是在筛选状态下,张三单独的结果。

追答

这个就是张三所有的结果,实在不明白你的意思
你图中G列 最后的张三 -3 198 ,198是怎么来的?