用 Excel 套路公式计算一个月内最长连续工作天数
很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。
现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。
解答网友问题:如何计算每个员工某月的最大连续工作天数。
案例:
下图 1 中的空单元格表示这一天是工作日,计算每个员工的最长连续工作天数,效果如下图 2 所示。
解决方案:
这个之前我教过,查找连续出现最多次数的题是有专门套路公式的,大家只需记住了每次往里套条件就行。
1. 在 B33 单元格中输入以下公式 --> 如果是365 版本就直接回车,低版本的话按 Ctrl+Shift+Enter:
=MAX(FREQUENCY(IF(B2:B32="",ROW(B2:B32)),IF(B2:B32<>"",ROW(B2:B32))))
2. 向右拖动,复制公式。
公式释义:
- 先来讲套路公式什么:=MAX(FREQUENCY(IF(符合条件,相应行号),IF(不符合条件,相应行号)));
- IF(B2:B32="",ROW(B2:B32)):“符合条件”就是 B2:B32 区域都为空值,后面行号用 row 函数提取就行;
- IF(B2:B32<>"",ROW(B2:B32)):“不符合条件”就是 B2:B32 区域不为空,后面行号一样;
- 看完套路公式,再来讲原理:
- IF(B2:B32="",ROW(B2:B32)):生成一组数组 ,B2:B32 区域内的值若为空就返回该单元格的行号,否则返回 false 值;
- IF(B2:B32<>"",ROW(B2:B32)):正相反,返回 B2:B32 区域内非空单元格的行号;
- FREQUENCY(...,...):
- frequency 函数的语法为 FREQUENCY(要查找的区域, 条件区域),作用是计算第二个参数中的数值在第一个参数中出现的频率;
- frequency 的结果是模糊匹配,计算出小于等于第二个参数的个数;
- 现在再来理解套路公式就懂了,计算 B2:B32 中比非空单元格行号小的空单元格数;说白话就是一旦有休假,就统计上一次休假后到该日期前的连续工作天数;
- MAX(...):最后用 max 函数计算出所有连续天数中最大的那个。