Menu

Excel MOD 和 ABS 函数:求余数和绝对值

=MOD(A2,B2) 返回 A2 除以 B2 后的余数,所以 =MOD(17,5) 是 2。=ABS(A2) 返回去掉符号的数字,所以无论哪个值更大,=ABS(B2-C2) 都是两个值之差。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=MOD(A2,B2) 返回 A2 除以 B2 后的余数:=MOD(17,5) 是 2,因为 17 里面有三个 5,还剩 2。=ABS(A2) 返回去掉符号的数字,所以 -42 变成 42。

用 MOD 求余数
C2
ABCD
1NumberDivisorMODTimes it fits
217523
320504
47213
51007214
6-321-1
73-2-1-1
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

D 列显示的是除法的另一半:QUOTIENT 返回除数能整除的次数,所以 17 等于 3 乘以 5 再加 2。把 B2 改成 0,MOD 会返回 #DIV/0!,和除以零时一样。

MOD 语法

=MOD(number, divisor)

MOD 也适用于小数:=MOD(7.5,2) 是 1.5,=MOD(A2,1) 只返回数字的小数部分,例如从 3.75 得到 0.75。对于带时间的日期,=MOD(A2,1) 保留时间、去掉日期。

负数的 MOD

上面表格的第 6 行和第 7 行展示了 Excel 的规则:结果的符号与除数相同。=MOD(-3,2) 是 1 而不是 -1,=MOD(3,-2) 是 -1。Excel 按 number - divisor * INT(number / divisor) 计算 MOD,而 INT 总是向下取整。

这是电子表格和代码不一致的地方。在 JavaScript、Java、C 和 C# 中 -3 % 2 是 -1;Python 的 -3 % 2 是 1,与 Excel 相同。Google 表格与 Excel 一致。如果需要结果与被除数同号,用 =A2-B2*TRUNC(A2/B2)。

奇数还是偶数,以及隔行着色

当 MOD(number,2) 为 0 时,这个数是偶数。由此可以得到“Even”或“Odd”标签,搭配 ROW 还能得到隔行着色的规则。Excel 也有 ISEVEN 和 ISODD,它们直接返回 TRUE 或 FALSE。

奇偶判断与隔行着色
C2
ABC
1OrderQtyEven or odd
210014Even
310027Odd
4100310Even
510043Odd
610058Even
710065Odd
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

条件格式规则 =MOD(ROW($A2),2)=0 突出显示第 2、4、6 行,也就是行号为偶数的行。在 Excel 中,它位于“开始 > 条件格式 > 新建规则 > 使用公式确定要设置格式的单元格”,在那里更短的 =MOD(ROW(),2)=0 也可以。把 2 改成 3,就会每隔三行着色一次。

每隔 N 行:每三个值求一次和

MOD(ROW()-ROW(first),n)=0 对区域的第一行为 TRUE,之后每隔 n 行为 TRUE。放进 SUMPRODUCT 中,就能从一列中每三个值挑出一个,例如每个季度的最后一个月。

每隔三行求和
E2
ABCDE
1MonthSalesEvery 3rd
2Jan120310
3Feb135
4Mar150
5Apr110
6May125
7Jun160
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

各行的偏移量是 0 到 5,=2 保留偏移量 2 和 5:3 月和 6 月,150 加 160。把 =2 改成 =0,就会取 1 月和 4 月。

把分钟换算成小时和分钟

MOD 和整数除法可以把一个总数拆分成不同单位:小时和剩余的分钟、周和剩余的天数、箱数和零散的件数。

135 分钟是 2 小时 15 分钟
B2
ABCD
1MinutesHoursMinutes leftLabel
21352152 h 15 min
3590590 h 59 min
4240404 h 0 min
51000164016 h 40 min
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

1000 分钟是 16 小时 40 分钟。对于真正的时间值(8:30、17:45)以及跨越午夜的班次,标准公式是 =MOD(end-start,1);见 时间计算。

ABS:两个数之差

=ABS(number) 去掉负号。它的主要用途是在不关心哪个值更大时求差值的大小:每次预测与实际结果相差多少,或者某个测量值是否在允许误差之内。

每次预测偏差多少
D2
ABCDE
1WeekForecastActualOff byWithin 10?
2W11201128TRUE
3W29510914FALSE
4W31401382TRUE
5W4809313FALSE
6W51101046TRUE
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

W1 的 B2-C2 是 8,W2 是 -14;ABS 把两者都变成距离。要把这些距离加起来,=SUMPRODUCT(ABS(B2:B6-C2:C6)) 在所有 Excel 版本中都能用;这里得到 43,即 D 列的合计。再除以个数,就是平均绝对误差。

动手试试:MOD 和 ABS

把鸡蛋装进 12 个一盒的盒子
C2
ABC
1EggsPer cartonLeft over
235012
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中计算:把 A2 中的鸡蛋装进容量为 B2 的整盒之后,还剩多少个鸡蛋。

温度变化
D2
ABCD
1CityMorningEveningChange
2Oslo146
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 D2 中显示 B2 和 C2 之间温度变化了多少度,无论哪个读数更高,都用正数表示。

MOD、QUOTIENT 与 INT 的对比

你想要的公式17 和 5 的结果-17 和 5 的结果
余数=MOD(A2,B2)23
整除次数,向零取整=QUOTIENT(A2,B2)3-3
整除次数,向下取整=INT(A2/B2)3-4
精确除法=A2/B23.4-3.4

对于正数,QUOTIENT 与 INT(A2/B2) 结果一致,而且 B2*INT(A2/B2)+MOD(A2,B2) 总能还原出原来的数。遇到负数时,只有 INT 这一组能加回原数:-4 乘以 5 再加 3 等于 -17。在负数上把 QUOTIENT 和 MOD 混用,常常导致排班或分配时差一的错误。

常见问题

Excel 中的 MOD 有什么用?

它返回除法的余数:=MOD(17,5) 是 2,因为 17 里面有三个 5,还剩 2。如果能整除,MOD 返回 0。

怎样在 Excel 中判断一个数是不是偶数?

用 =MOD(A2,2)=0,偶数时为 TRUE,或者用 =ISEVEN(A2)。要显示文字标签:=IF(MOD(A2,2)=0,"Even","Odd")。

为什么负数的 MOD 结果是正数?

Excel 的 MOD 结果与除数的符号相同:=MOD(-3,2) 是 1,=MOD(3,-2) 是 -1。很多编程语言中 -3 % 2 的结果是 -1,所以结果可能与代码不同。

怎样在 Excel 中求绝对值?

用 =ABS(A2):-42 变成 42,42 仍然是 42。要得到不带符号的差值大小,用 =ABS(B2-C2)。

怎样在 Excel 中对绝对值求和?

用 =SUMPRODUCT(ABS(A2:A7)),它在所有版本中都能使用。在 Excel 365 和 2021 中,=SUM(ABS(A2:A7)) 也可以。

Coddy 编程语言插图

和 Coddy 一起学编程

开始