Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?

筛选这个功能,某些情况下让人欢喜让人忧 , 可以筛选固然方便,但是如果一个表有各种计算项,能否在筛选后忽略隐藏单元格进行计算?


案例:



下图 1 是某小区的馄饨团购表,请按以下要求统计各项数据:
  • 在 A 列仅对筛选后的可见行编号;
  • D2 单元格:计算可见行的购买总数
  • E2 单元格:计算可见行的总价
效果如图 2 所示 。
Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?



解决方案:



1. 在 A5 单元格中输入以下公式 --> 下拉复制公式:
=SUBTOTAL(3,C$5:C5)
Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?



公式释义:
  • subtotal 函数的作用是返回列表或数据库中的分类汇总;
  • 语法为 SUBTOTAL(function_num,ref1,[ref2],...),以下是所有 function_num 对应的功能;在筛选的情况下,该函数都只统计可见单元格内容;

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?

  • 从上图可以看出,参数 3 的作用是统计区域内可见单元格的数量;
  • 区域的起始单元格必须绝对引用,结尾单元格须相对引用 , 这样就能让区域随着公式下拉不断增加,从而起到序列递增的效果


有关 subtotal 函数的详解,请参阅。


不管怎么筛选 , 序号都会自动按显示行重新顺序编号 。
Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?



2. 在 D2 单元格中输入以下公式:
=SUBTOTAL(9,D5:D36)


公式释义:
  • 参数 9 的作用是求和

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?



不管怎么筛选 , 序号和总数都正确 。
Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?



3. 在 E2 单元格中输入以下公式:
=SUMPRODUCT(SUBTOTAL(3,OFFSET(C4,ROW(A1:A32),))*D5:D36*E5:E36)


【Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?】公式释义:
  • OFFSET(C4,ROW(A1:A32),):以 C4 单元格为起点 , 向下依次偏移 1 至 32 行 , 即遍历品类的所有选项;
  • SUBTOTAL(3,...):对遍历的数组忽略隐藏行计数,就会生成由 1 和 0 组成的数组 , 1 代表未隐藏,0 则是隐藏行;
  • SUMPRODUCT(...*D5:D36*E5:E36):将上述数组与 D 和 E 的数值相乘求和,只有值为 1 的能求出结果,即计算出所有未隐藏的乘积之和

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?



通过一个 subtotal 函数,就实现了筛选状态下的 3 种计算需求 。
Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?

Excel 表格筛选后,编号、总数、总价计算能否动态只统计可见行?



很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握 。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点 。
现在终于有了,以下专栏,从最基础的操作和概念讲起 , 用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手 。

相关经验推荐