Excel中只对可见数据求和,实现完美自动筛选.

在使用EXCEL筛选功能时,有个让人非常苦恼的事情,就是筛选出来的数据没有小计,如果用常规的sum函数求和,那些被隐藏的行也被被计算进去,得到的不是小计,而是所有数据的总计。



要实现这个效果,其实非常简单,下面就跟着我一步一步来吧:

一、自动筛选

(1)先在第19行上面插入一个空行:


这样合计行会变成第20行。

为什么要插入空行呢,因为如果没有这个空行,你即使在合计行设置了小计的公式,也会在筛选时被隐藏,所以这个空行是必须的。

(2)选中B1:B18这个区域,然后进行筛选(EXCEL2000/2003版:点击“数据”菜单下的“筛选”、“自动筛选”;EXCEL2007/2010版:依次点击数据标签、筛选按钮),就会只对部门进行自动筛选,而姓名、工资那些列都不会自动筛选:


(3)隐藏刚才插入的空白行,第19行,这时可以发现,不管怎么筛选,原先的合计行都不会被隐藏。



二、只对显示的内容求和

从上表可以看到,虽然筛选了人力资源部的数据,但第20行合计却依然是所有人的(包括被筛选后隐藏的),这当然不是我们需要的结果。所以要对C20单元格的公式进行修改:

=SUBTOTAL(109,C2:C18)

subtotal是分类求和函数。

第一个参数109的意思是只对可见区域求和,所以只要是只对可见区域求和就必须是109,要是只对可见区域求统计有数据的单元格个数就是103。

第二个参数是要求求和的区域,这里是C2:C18,就是本表工资列的数据区域。

现在可以发现,只要对部门进行了重新筛选,C20单元格的合计数会自动进行变化。

当然,这时候B20单元格显示的“合计”并不恰当,因为全部显示时才是“合计”,部分显示只能是“小计”,B20单元格设置公式:

=IF(SUBTOTAL(103,B2:B18)=COUNTA(B2:B18),"合计","小计")



你可能感兴趣的:(Excel/VBA,excel,c,2010)