数据分析从入门到进阶
上QQ阅读APP看书,第一时间看更新

2.2.3 便捷的数值运算函数

Excel函数里面同样包含了许多对数值进行处理的函数,方便快速处理数据并进行相关运算。常见的数值运算函数包括生成随机数值的RAND、RANDBETWEEN函数,进行数学运算的ABS、MOD、POWER、PRODUCT函数,四舍五入、向上向下取整的CEILING、FLOOR、ROUND、ROUNDUP、ROUNDDOWN、TRUNC函数等。日常工作中碰到需要数值进行模拟运算时,可使用RAND、RANDBETWEEN函数生成的随机数值来计算。此外,对业务中的指标数据进行分段统计时,都需要使用CEILING、FLOOR等函数进行数值处理。下面通过实例对常用的数值运算函数进行说明。

1.RAND函数

功能说明:返回一个大于等于0且小于1的、平均分布的随机实数,每次计算工作表时都会返回一个新的随机实数。

语法:RAND()

参数:无参数。

示例:随机生成一组用户的性别。

公式与步骤:单元格B2内输入公式“=IF(RAND()>0.5,"男","女")”,然后向下拖拽复制公式,结果如图2-50所示。

图2-50 随机生成用户性别

提示:

● 利用RAND函数生成大于等于0且小于1的随机实数,然后嵌套IF函数判断随机数与数值0.5的大小,如果随机实数大于0.5,用户性别返回“男”,否则返回“女”。

2.RANDBETWEEN函数

功能说明:返回位于两个指定数之间的一个随机整数。每次计算工作表时都将返回一个新的随机整数。

语法:RANDBETWEEN(bottom, top)

参数:

● bottom必需。RANDBETWEEN函数返回的最小整数。

● top必需。RANDBETWEEN函数返回的最大整数。

示例:

随机生成一组学生的年龄(20~25)、语文成绩(0~100分)以及手机号码(以133开头)。

公式与步骤:

随机生成年龄:单元格B2内输入公式“=RANDBETWEEN(20,25)”,然后向下拖拽复制公式。

随机生成语文成绩:单元格C2内输入公式“=RANDBETWEEN(0,100)”,然后向下拖拽复制公式。

随机生成手机号码:单元格D2内输入公式“="133" & RANDBETWEEN(10000000, 99999999)”,然后向下拖拽复制公式,结果如图2-51所示。

图2-51 随机生成年龄、成绩和手机号码

提示:RANDBETWEEN函数可以取到bottom和top的数值。

3.ABS函数

功能说明:返回数字的绝对值。

语法:ABS(number)

参数:number必需。需要计算其绝对值的实数。

示例:取数值-2的绝对值。

公式与步骤:单元格E2内输入公式“=ABS(A2)”,结果如图2-52所示。

图2-52 ABS绝对值函数

4.MOD函数

功能说明:返回两数相除的余数。返回结果的符号与除数相同。

语法:MOD(number, divisor)

参数:

● number必需。要计算余数的被除数。

● divisor必需。除数。

示例:区域A2:A5是被除数,区域B2:B5是对应的除数,计算每行数据的余数。

公式与步骤:单元格C2内输入公式“=MOD(A2,B2)”,然后向下拖拽复制公式,结果如图2-53所示。

图2-53 MOD求余函数

提示:

● 如果divisor为0,则MOD返回错误值 #DIV/0!。

● 余数的符号与除数相同。

5.POWER函数

功能说明:返回数字乘幂的结果。

语法:POWER(number, power)

参数:

● number必需。基数。

● power必需。基数乘幂运算的指数。

示例:区域A2:A4是基数,区域B2:B4是对应的指数,计算每行数据的乘幂。

公式与步骤:单元格C2内输入公式“=POWER(A2,B2)”,然后向下拖拽复制公式,结果如图2-54所示。

图2-54 POWER函数求数字乘幂

提示:可以使用字符“^”代替POWER函数,表示基数乘幂运算的幂。例如,数字3的平方公式可以写成“=3^2”。

6.PRODUCT函数

功能说明:将参数形式给出的数字相乘并返回乘积。

语法:PRODUCT(number1, [number2], …)

参数:

● number1必需。要相乘的第一个数字或单元格区域。

● number2, … 可选。要相乘的其他数字或单元格区域。

示例:

● 计算区域A2:A5的数字乘积。

● 计算区域A2:A5的数字乘积再乘以3。

公式与步骤:

● 单元格E2内输入公式“=PRODUCT(A2:A5)”。

● 单元格E3内输入公式“=PRODUCT(A2:A5,3)”,结果如图2-55所示。

图2-55 PRODUCT函数求数字乘积

提示:可以使用字符“*”代替PRODUCT函数,表示数字之间的乘法运算。例如,数字1、2、4、8的乘积公式可以写成“=1*2*4*8”。

7.CEILING函数

功能说明:返回将参数number向上舍入(沿绝对值增大的方向)为最接近的指定基数的倍数。

语法:CEILING(number,significance)

参数:

● number必需。要舍入的值。

● significance必需。要舍入到的倍数。

示例:区域A2:A6是要舍入的值,区域B2:B6是基数,用CEILING函数进行向上舍入为最接近的指定基数的倍数。

公式与步骤:单元格C2内输入公式“=CEILING(A2,B2)”,然后向下拖拽复制公式,结果如图2-56所示。

图2-56 CEILING函数进行向上舍入

提示:

● 如果number正好是significance的倍数,则不进行舍入。

● 如果number和significance都为负,则按远离0的方向进行向下舍入。

● 如果number为负,significance为正,则按朝向0的方向进行向上舍入。

● 如果number为正,significance为负,则结果返回错误值#NUM!。

8.FLOOR函数

功能说明:将参数number向下舍入(沿绝对值减小的方向)为最接近的指定基数的倍数。

语法:FLOOR(number, significance)

参数:

● number必需。要舍入的值。

● significance必需。要舍入到的倍数。

示例:区域A2:A6是要舍入的值,区域B2:B6是基数,用FLOOR函数进行向下舍入为最接近的指定基数的倍数。

公式与步骤:单元格C2内输入公式“=FLOOR(A2,B2)”,然后向下拖拽复制公式,结果如图2-57所示。

图2-57 FLOOR函数进行向下舍入

提示:

● 如果number正好是significance的倍数,则不进行舍入。

● 如果number和significance都为负,则按朝0的方向进行向上舍入。

● 如果number为负,significance为正,则按远离0的方向进行向下舍入。

● 如果number为正,significance为负,则结果返回错误值#NUM!。

9.ROUND函数

功能说明:ROUND函数将数字四舍五入到指定的位数。

语法:ROUND(number, num_digits)

参数:

● number必需。要四舍五入的数字。

● num_digits必需。要进行四舍五入运算的位数。

示例:区域A2:A5是要处理的数值,区域B2:B5是对数值四舍五入的说明。

公式与步骤:

四舍五入到2个小数位数:单元格C2内输入公式“=ROUND(A2,2)”。

四舍五入到3个小数位数:单元格C3内输入公式“=ROUND(A3,3)”。

四舍五入到小数点左侧1位:单元格C4内输入公式“=ROUND(A4, -1)”。

四舍五入到小数点左侧2位:单元格C5内输入公式“=ROUND(A5, -2)”,结果如图2-58所示。

图2-58 ROUND函数进行四舍五入

提示:

● 如果num_digits大于0,则将数字四舍五入到指定的小数位数。

● 如果num_digits等于0,则将数字四舍五入到最接近的整数。

● 如果num_digits小于0,则将数字四舍五入到小数点左边的相应位数。

10.ROUNDUP函数

功能说明:朝着远离数值0的方向将数字进行向上舍入。

语法:ROUNDUP(number, num_digits)

参数:

● number必需。需要向上舍入的任意实数。

● num_digits必需。要将数字舍入到的位数。

示例:区域A2:A5是要处理的数值,区域B2:B5是对数值向上舍入的说明。

公式与步骤:

向上舍入到2个小数位数:单元格C2内输入公式“=ROUNDUP(A2,2)”。

向上舍入到3个小数位数:单元格C3内输入公式“=ROUNDUP(A3,3)”。

向上舍入到小数点左侧1位:单元格C4内输入公式“=ROUNDUP(A4, -1)”。

向上舍入到小数点左侧2位:单元格C5内输入公式“=ROUNDUP(A5, -2)”,结果如图2-59所示。

图2-59 ROUNDUP函数进行向上舍入

提示:

● ROUNDUP与ROUND相似,区别是它始终将数字进行向上舍入。

● 如果num_digits大于0,则将数字向上舍入到指定的小数位数。

● 如果num_digits等于0,则将数字向上舍入到最接近的整数。

● 如果num_digits小于0,则将数字向上舍入到小数点左边的相应位数。

11.ROUNDDOWN函数

功能说明:朝着数值0的方向将数字进行向下舍入。

语法:ROUNDDOWN(number, num_digits)

参数:

● number必需。需要向下舍入的任意实数。

● num_digits必需。要将数字舍入到的位数。

示例:区域A2:A5是要处理的数值,区域B2:B5是对数值向下舍入的说明。

公式与步骤:

向下舍入到2个小数位数:单元格C2内输入公式“=ROUNDDOWN(A2,2)”。

向下舍入到3个小数位数:单元格C3内输入公式“=ROUNDDOWN(A3,3)”。

向下舍入到小数点左侧1位:单元格C4内输入公式“=ROUNDDOWN(A4, -1)”。

向下舍入到小数点左侧2位:单元格C5内输入公式“=ROUNDDOWN(A5, -2)”,结果如图2-60所示。

图2-60 ROUNDDOWN函数进行向下舍入

提示:

● ROUNDDOWN与ROUND相似,区别是它始终将数字进行向下舍入。

● 如果num_digits大于0,则将数字向下舍入到指定的小数位数。

● 如果num_digits等于0,则将数字向下舍入到最接近的整数。

● 如果num_digits小于0,则将数字向下舍入到小数点左边的相应位数。

12.TRUNC函数

功能说明:将数字进行截取返回整数。

语法:TRUNC(number, [num_digits])

参数:

● number必需。需要截尾取整的数字。

● num_digits可选。用于指定取整精度的数字,默认值为0。

示例:区域A2:A4是要处理的数值,区域B2:B4是对数值进行截取的说明。

公式与步骤:

截取整数部分:单元格C2内输入公式“=TRUNC(A2)”。

截取到小数点右侧2位:单元格C3内输入公式“=TRUNC(A3,2)”。

截取到小数点左1位:单元格C4内输入公式“=TRUNC(A4, -1)”,结果如图2-61所示。

图2-61 TRUNC函数进进行截取

提示:TRUNC与INT在对数值的整数部分进行截取时有些相似。TRUNC是直接删除数字的小数部分,而INT根据数字小数部分的值将数字向下舍入为最接近的整数。只有当处理负数的时候,INT和TRUNC会有区别。例如,TRUNC(-3.14)返回-3,而INT(-3.14)返回-4。

以上是对数值运算函数的介绍,并通过示例对函数进行了功能讲解,下面的数值运算函数案例一~案例二是数值运算函数的应用扩展。同一个案例采用了多种方法来解决。

13.数值运算函数案例一

案例说明:区域A2:A11是随机生成的用户年龄(范围是21~60岁),D3:D6是年龄分段,需要统计不同年龄段的用户人数。

公式与步骤:

方法一:单元格B2输入公式“=CEILING(A2,10)”,然后向下拖拽复制公式,在区域B2:B11内生成年龄分段组辅助数据。单元格E3内输入公式“=COUNTIFS(B:B, ROW()*10)”,然后向下拖拽复制公式。

方法二:单元格F3内输入数组公式“{=SUM((CEILING($A$2:$A$11,10)=ROW()*10)+0)}”,然后向下拖拽复制公式。

方法三:单元格G3内公式为“=COUNTIFS(A:A,">"&((ROW()-1)*10),A:A,"<="&(ROW()*10))”,然后向下拖拽复制公式,结果如图2-62所示。

图2-62 数值运算函数案例一

提示:

● 方法一用CEILING函数把年龄数据向上取整,全部处理成10的整数倍,借助于ROW函数拼凑年龄段的条件,最后用COUNTIFS函数进行单条件计数。

● 方法二用CEILING函数把年龄数据向上取整,全部处理成10岁的整数倍,然后将处理好的数组和年龄组的上限进行比较,如果相等,返回TRUE,如果不相等,返回FALSE,从而生成布尔值数值,通过加0处理成数值数组,最后用SUM数组公式进行求和。

● 方法三用ROW函数拼凑成每个年龄分段组的上限和下限,最后用COUNTIFS函数进行多条件计数。

14.数值运算函数案例二

案例说明:区域A2:A11内随机生成介于1~100的数值,然后分别统计奇数和偶数的个数。

公式与步骤:

1)单元格A2内输入公式“=RANDBETWEEN(1,100)”,然后向下拖拽到单元格A11位置进行公式复制。

2)选中A列或区域A1:A11,按〈Ctrl+C〉组合键进行复制,选中区域生成虚线之后,右击“粘贴选项”里面选择“粘贴值”,此时单元格内的公式将会消失,目的是让随机函数生成的数值固定不变。

3)单元格E2内输入数组公式“{=SUM(MOD(A2:A11,2))}”实现奇数个数统计。

4)单元格E3内输入数组公式“{=SUM(IF(MOD(A2:A11,2)=0,1,0))}”实现偶数个数统计,结果如图2-63所示。

图2-63 数值运算函数案例二

提示:

● 用MOD函数将随机数值除以2求余,结果返回1(奇数)或者0(偶数),然后对结果中的数值1直接套用SUM数组进行求和,统计的就是奇数的个数。

● 用MOD函数将随机数值除以2求余,结果返回1(奇数)或者0(偶数),然后套用IF函数,将余数与数值0进行比较,相等返回1,否则返回0,再套用SUM数组进行求和,统计的就是偶数的个数。