一个经常用到的不常用函数:MOD

在Excel的函数中,有那么一类函数,按照这个函数本身的功能来说,实在想不到会有必要去了解它们,也不知道在什么地方会用到它们。但是,在很多场景下,我们可以借助他们实现我们想要的功能。

介绍

如果从字面上理解的话,MOD函数绝对会被很多人抛弃:求余数!我又不做数学,为什么要求余数?但是,在非常多的场景下,我们却需要用到它。

“返回两数相除的余数”,这就是这个函数的定义:

这个函数完整的形式如下:

MOD(number,divisor)

其中:number是被除数,divisor是除数。

这个定义很清晰,每一个人都能很清楚的理解。下面的几个示例也说明了MOD函数的作用:

很简单,对吧!

但是这个函数在实际上的作用远远超过了这个看似简单的定义。下面我们通过一些案例,介绍实际中如何利用MOD解决各种问题。

实际应用案例

1. 重复的预算数据

比如,我们在预算表中,每个季度末都有一笔固定数目的金额:

这个公式就可以用MOD来辅助完成。可以使用公式:

=IF(MOD(COLUMN(),3)=1,100,0)

我们看到,通过计算列号和3的余数,我们找到了那些区分季度末(3,6,9,12月)和其他月份的标志,那就是,余数为1。满足这个条件的月份就分配100,否则就不分配。

当然,变化一下情况,你可以考虑不跟列号求余数,而是跟月份计算余数:

=IF(MOD(MONTH(B2),3)=0,100,0)

注意,跟月份求余数的时候,我们判断条件变成余数为0了。这是因为季度末的月份(3,6,9,12)都可以被3整除。

2. 每隔n行求和 

这也是一个经常遇到的场景:

上图中,我们要求合计,需要把各季度的数据加起来。显然就是每隔4行求合计:

可以使用公式:

=SUMPRODUCT(D3:D18,--(MOD(ROW(D3:D18),4)=2))

这里,我们是求D3:D18每个单元格的行号跟4的余数,余数为2的符合我们的要求(行6,10,14,18被4除都余2)。

3. 从日期和时间数据中截取时间值

我们知道,Excel中日期和时间都是数值类型,日期是整数,每过一天加1,时间是小数,每过一小时加1/24。利用这个特点,我们可以用MOD函数从日期和时间数据中截取时间值,用的公式特别简单:

=MOD(日期和时间,1)

上图很清晰了显示了MOD在其中的作用。任何一个数值,被1除后余数总是小数部分!

4. 高亮显示所有整数

需求可以用下图表示:

很明显,我们可以使用条件格式来完成。在条件格式中需要用MOD函数:

这个跟上例实际是一样的。都是利用了所有数字被1除后,余数都是小数部分的特性。

5. 两个时间点之间过去了多少小时

这个例子在工时计算时经常遇到。

这个问题看上去很简单,直接减就可以了。例如:

但是这里有个陷阱,就是如果结束时间跨越了0点,结束时间就小于起始时间了,此时,直接减就会出问题:

这时,合理的计算方式应该是:

1-起始时间+结束时间

得到了正确结果,实际上你已经差不多连轴转了😀

综合这两种情况,可以用IF公式:

=IF(起始时间<结束时间,结束时间-起始时间,1-起始时间+结束时间)

这个函数起始可以用MOD函数来简化:

=MOD(结束时间-起始时间,1)

这是利用了Excel中Mod函数计算负数余数的特点。详细说明的话需要讲到数学上余数的定义,估计大多数人不想看,就不详细说了。你只要记住这个特殊的应用场景就好了。

总结

关于MOD函数还有很多应用场景,我们就不一一列举了。大部分不超过我们上面案例的应用范围。大家看多了自然就可以举一反三了😀

取得本文模板文件的方式:

  1. 关注本公众号

  2. 点击底部菜单“联系客服”,与客服取得联系,索取“MOD函数”模板文件


(0)

相关推荐