- Excel数据处理与可视化
- 韩春玲
- 4044字
- 2020-08-27 17:48:39
1.6 数据格式转换
1.6.1 数值取整的9种方法
【问题】
数据取整是Excel数据处理最常用的方式。可能大家最经常用的是INT函数,但INT函数并不能满足所有的取整要求。本节将总结各种取整函数的方法,基本能满足不同的取整要求。
【实现方法】
1)INT函数取整
特征:
(1)当数值为正数时,直接截掉数值的小数部分。
(2)当数值为负数时,截掉数值的小数部分再-1。
INT函数取整举例如图1-193所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_91_1.jpg?sign=1739182849-G9CfoYiiqVqYDwoetjuvTetnDzkiVFAB-0-fcd886f9403901e4bdbda5706f8b3d92)
图1-193 INT函数取整举例
2)TRUNC函数取整
特征:不管数值是正数还是负数,都直接截掉数值的小数。
TRUNC函数取整举例如图1-194所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_91_2.jpg?sign=1739182849-vXrCKekKIBbsWwimmUTcltsCFxfUlYWn-0-fc8922a2712a58d74b8e5ce1cf6ca1e5)
图1-194 TRUNC函数取整举例
3)ROUND函数小数取整
特征:当ROUND函数的第2个参数为0时,对数值采取四舍五入方式取整。
ROUND函数对小数取整举例如图1-195所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_92_1.jpg?sign=1739182849-mFHkTN8VfIz6Fpm0zaXRSFKECLNrmGRE-0-e2d776c4b656d6fa74e69f0fd98ffe88)
图1-195 ROUND函数对小数取整举例
4)ROUND函数整数取整
特征:当ROUND函数的第2个参数为负数时,将数值四舍五入到其小数点左边的相应位数取整。
ROUND函数整数取整举例如图1-196所示,ROUND(A2,-3)是指将数值12345四舍五入到千位数。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_92_2.jpg?sign=1739182849-CXxUy2SmlNy21KuJxcHFnlCzBIHTzlD4-0-dfcffd0b814b159663a2b989fd8baaf5)
图1-196 ROUND函数整数取整举例
5)ROUNDUP(向上舍入)函数
特征:
(1)朝着远离0(零)的方向将数字进行向上舍入。
(2)如果第2个参数为0,则将数字向上舍入到最接近的整数。
(3)如果第2个参数小于0,则将数字向上舍入到小数点左边的相应位数。
ROUNDUP函数取整举例如图1-197所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_92_3.jpg?sign=1739182849-EeXHLmKWw78esaWHDu8psnTtYh4nWvvr-0-c56cc23064ba7fde37b7fab66bbbeb5d)
图1-197 ROUNDUP函数取整举例
6)ROUNDDOWN(向下舍入)函数
特征:
(1)朝着零的方向将数字进行向下舍入。
(2)如果第2个参数为0,则将数字向下舍入到最接近的整数。
(3)如果第2个参数小于0,则将数字向下舍入到小数点左边的相应位数。
ROUNDDOWN函数取整举例如图1-198所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_92_4.jpg?sign=1739182849-ECv5fkcXh6JZRHEMaBRoAdfHl1Zvzck4-0-685cd46391fbe347d583e8b6ca62bda6)
图1-198 ROUNDDOWN函数取整举例
7)MROUND函数
特征:
(1)返回参数按指定基数舍入后的数值。
(2)采取四舍五入的方式。
(3)数值和基数参数的符号必须相同。如果不相同,将返回错误值“#NUM!”。
MROUND函数取整举例如图1-199所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_92_5.jpg?sign=1739182849-osv0HkQwXcdRuLkK3DUX369yubWOEvkV-0-8217710e89a34f746da00584b9c1f250)
图1-199 MROUND函数取整举例
8)CEILING函数
特征:
(1)向上舍入(沿绝对值增大的方向)为最接近指定基数的倍数。
(2)如果数值为正值,基数为负值,则返回错误值“#NUM!”。
(3)如果数值为负,基数为正,则对值按朝向0的方向进行向上舍入。
(4)如果数值和基数都为负,则对值按远离0的方向进行向下舍入。
CEILING函数取整举例如图1-200所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_93_1.jpg?sign=1739182849-tRcB48KXRruFHmEoaGhNUgiiSqIEXcAX-0-cab80aa6974d42d7bda47512a117b76e)
图1-200 CEILING函数取整举例
9)FLOOR函数
特征:
(1)将数值向下舍入(沿绝对值减小的方向)为最接近的指定基数的倍数。
(2)如果数值为正值,基数为负值,则返回错误值“#NUM!”。
(3)如果数值为负,基数为正,则对值按远离0的方向进行向下舍入。
(4)如果数值和基数都为负,则对值按朝向0的方向进行向上舍入。
FLOOR函数取整举例如图1-201所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_93_2.jpg?sign=1739182849-fHXFH0yZ37WRHYMqWNJguj4PCox0yAsv-0-f674762f032f28fbc1c8693f036471d6)
图1-201 FLOOR函数取整举例
1.6.2 数值的特殊舍入方式
【问题】
舍入到偶数或奇数,在很多特殊数据处理场合下使用。
【实现方法】
1)舍入到偶数
(1)MROUND函数四舍五入到偶数的用法举例如图1-202所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_94_1.jpg?sign=1739182849-Ql8sPivMDpnUuenRuvDysfkXfS2G5Vx1-0-82f05560b7cbd302b0b41ef97cfffb69)
图1-202 MROUND函数四舍五入到偶数的用法举例
注意:
•偶数是指能被2整除的数,所以,MROUND函数的第2个参数,即基数为2或者为负2。
•如果第2个参数是2,结果为正偶数。
•如果第2个参数是负2,结果为负偶数。
•数值和基数参数的符号必须相同。如果不相同,结果将返回#NUM!错误。
(2)CEILING函数的用法举例如图1-203所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_94_2.jpg?sign=1739182849-GMFtNSqcrYfx9o9Ry5qDSNhvEFYwvvHp-0-c6e79ad5b7e2925744fe22b98cbb0b78)
图1-203 CEILING函数的用法举例
用CEILING函数舍入到偶数时应注意:
•基数,即第2个参数为2或者为负2。
•如果数值为正值,基数为2,则向上舍入。
•如果数值为正值,基数为负2,则返回错误值“#NUM!”。
•如果数值为负,基数为2,则对值按朝向0的方向进行向上舍入。
•如果数值和基数都为负2,则对值按远离0的方向进行向下舍入。
(3)FLOOR函数的用法举例如图1-204所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_94_3.jpg?sign=1739182849-aKkijeysf8YU1SKScrOZkFR0kxdg7P6W-0-fe5468e9c8eeeb17080c2bdede8c808e)
图1-204 FLOOR函数的用法举例
用FLOOR函数舍入到偶数时应注意:
•基数,即第2个参数为2或者为负2。
•如果数值为正值,基数为2,则向下舍入。
•如果数值为正值,基数为负2,则返回错误值“#NUM!”。
•如果数值为负,基数为2,则对值按远离0的方向进行向下舍入。
•如果数值和基数都为负2,则对值按朝向0的方向进行向上舍入。
(4)EVEN函数。EVEN函数是为舍入到偶数量身定制的函数。EVEN函数的用法举例如图1-205所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_95_1.jpg?sign=1739182849-h13gxqmy2w5H22N0B7kBYBoQKA8LCVzY-0-a1fa022ef3797fd339f6eb4cb53d37cd)
图1-205 EVEN函数的用法举例
EVEN函数的特征:
•参数只有一个,即要舍入的数值。
•舍入方式为沿绝对值增大的方向返回最接近的偶数。
2)舍入到奇数
ODD函数为舍入到奇数量身定制的函数。
ODD函数的用法举例如图1-206所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_95_2.jpg?sign=1739182849-nEJp0JeXHVoLhY0yCYnfkE1RAtgryI4n-0-87fc4893bed0978c54c75fb90cd0105f)
图1-206 ODD函数的用法举例
特征:
(1)参数只有一个,即要舍入的数值。
(2)舍入方式为沿绝对值增大的方向返回最接近的奇数。
1.6.3 NUMBERSTRING函数和TEXT函数
【问题】
在进行数据处理时,经常会遇到阿拉伯数字与中文数字之间的转换(尤其遇到“钱”的问题时),而Excel提供的设置单元格格式功能,根本满足不了这种需求。
本节讲述利用NUMBERSTRING函数和TEXT函数实现在阿拉伯数字与中文数字之间的转换。
【实现方法】
1)阿拉伯数字转中文数字
阿拉伯数字转中文数字常用的两种函数是:NUMBERSTRING和TEXT。
(1)NUMBERSTRING函数。它是指数字到文本的转换。该函数在Excel里是隐藏的,输入时,须要输入函数名,而且不会提示参数。
NUMBERSTRING函数的参数有两个,其语法为:
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_95_3.jpg?sign=1739182849-XW0HGKKFVEDHFlObe2V6voBhnz7yWlKH-0-a3360890bb55f0a05a924f9e4ff03be6)
其中,格式参数可以有1、2、3这3个值。
•格式参数为1:返回值采用普通的大写格式,如“七百八十九”。
•格式参数为2:返回值采用财务专用大写格式,如“柒佰捌拾玖”。
•格式参数为3:返回值采用仅数字大写格式,如“七八九”。
以“123456789”为例,不同的格式参数,转换成为的中文数字格式也不同,结果如图1-207所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_96_1.jpg?sign=1739182849-As86r38aCIq5vKB7UwTlzGlFGxBgnPkT-0-cbfa64ba6cd5a7e55b204e461a8a92c3)
图1-207 NUMBERSTRING不同格式参数的返回值
NUMBERSTRING函数的局限是:仅能计算整数。
(2)TEXT函数。它用来将数字转成中文大写格式,其语法为:
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_96_2.jpg?sign=1739182849-Jp8FYeiDLzOHAdDM48gcMwZEqUGAmyTT-0-42633f735cf9e33ddf9b7561d407c66c)
•格式参数为"[dbnum1]":返回值采用普通的大写格式,如“七百八十九”。
•格式参数为"[dbnum2]":返回值采用财务专用大写格式,如“柒佰捌拾玖”。
•格式参数为"[dbnum3]":返回值采用阿拉伯数字之间加单位格式,如“7百8十9”。
以“123456789”为例,不同的格式参数,转换成为的中文数字格式也不同,结果如图1-208所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_96_3.jpg?sign=1739182849-OvPojzzOCuyf1LEDvO0I1nuNxAv6JCQG-0-258315d0512f284784747ec2fa5c31df)
图1-208 TEXT函数不同格式参数的返回值
2)中文数字转为阿拉伯数字
不同形式的中文数字转为阿拉伯数字的公式参数也不同,如图1-209所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_96_4.jpg?sign=1739182849-Ag32kqza1YZhLLUAihVA6dZV1AsjGOEH-0-e10693961600f6a2805672d6a3deea76)
图1-209 中文数字转为阿拉伯数字的公式
公式为“{=MAX((TEXT(ROW($1:$99999),"[dbnum1]")=A2)*ROW($1:$99999))}”,其解释如下。
•计算ROW($1:$99999),此步的结果是返回1~99999之间的整数。因为本示例要转换的数字有5位,所以用1~99999,如果有3位,用1~999;如果有六位,用1~999999。
•计算TEXT(ROW($1:$99999),"[dbnum1]"),将1~99999之间的整数转换为“一万二千三百四十五”格式的中文数字。
•计算TEXT(ROW($1:$99999),"[dbnum1]")=A2,将1~99999之间格式为“一万二千三百四十五”的中文数字与A2单元格的中文数字做比较。如果相等,则返回TRUE;如果不相等,则返回FALSE。所以,此步返回的是由一个TRUE和99998个FALSE组成的数组。
•计算(TEXT(ROW($1:$99999),"[dbnum1]")=A2)*ROW($1:$99999),由一个TRUE和99998个FALSE组成的数组,分别与对应的1~99999相乘,TRUE相当于1,FALSE相当于0,所以,此步的结果是返回1个阿拉伯数字与99998个0组成的数组,而该阿拉伯数字就是与A2单元格相对应的数字。
•计算{=MAX((TEXT(ROW($1:$99999),"[dbnum1]")=A2)*ROW($1:$99999))},在1个阿拉伯数字与99998个0组成的数组中取最大值,也就是与A2单元格相对应的数字。
因为这里进行的计算是数组计算,所以,按Ctrl+Shift+Enter组合键执行计算公式输入。由于数组中的数据有99999个,所以公式运行稍有点慢。
1.6.4 怎么计算长短不一的文本算式结果
【问题】
如图1-210所示,这样的交易记录怎么计算存货量?
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_97_1.jpg?sign=1739182849-cTZI6nLlnRclzcS85yqz5I3E9kInJGgt-0-8ff31dd8467109bbdfc105184a1e7ded)
图1-210 交易记录
【实现方法】
(1)选项设置。单击“文件”→“选项”→“高级”,勾选“转换Lotus 1-2-3公式”项,如图1-211所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_97_2.jpg?sign=1739182849-6qDvyKmLi6j5QJHLBtprpDBBql5RKE8w-0-77f67ca100c275fa75f209b830a4f249)
图1-211 勾选“转换Lotus 1-2-3公式”项
(2)数据分列。复制B2:B8区域到C2:C8区域,如图1-212所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_98_1.jpg?sign=1739182849-4RIm09B4cGDSPFJ09BIZ7aDekZZAxige-0-adab5184e1b62123243aa47edf13b517)
图1-212 复制算式到结果区
选中C2:C8区域,单击“数据”→“分列”按钮,在打开的“文本分列向导-第1步”对话框中不做特殊修改,直接单击“完成”按钮,如图1-213所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_98_2.jpg?sign=1739182849-oB4pSfXQbhjvYrvh7nWdQajKfqy9f6ER-0-c4caaa5dbef28a0a9a24343588d61e69)
图1-213 分列步骤
完成以后的结果,如图1-214所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_98_3.jpg?sign=1739182849-64EUAgbHrToziJskh99clinkBpGrLzve-0-f3ebbe447ceefed8bd979cf3c947f105)
图1-214 分列结果
(3)选项设置。单击“文件”→“选项”→“高级”→“转换Lotus 1-2-3公式”,将其前面的钩去除,如图1-215所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_99_1.jpg?sign=1739182849-Q1TkiUGGwM1XWEbc9yywrRBBKQcNw1sH-0-4406bac102aaa19ac49cad56dbd17ba7)
图1-215 “转换Lotus 1-2-3公式”去除勾选
去除这个选项的目的是:防止影响日期等类型数据的正常输入。
特别提醒:这样计算出来的结果,不会随着源数据的修改而改变!要想真正利用Excel记账,一定要预先设计好表结构哦!
1.6.5 阿拉伯数字(小写)转为中文数字(大写)来表示人民币的金额
【问题】
1.6.3节讲述了利用NUMBERSTRING和TEXT函数实现阿拉伯数字和中文数字的转换,并提到使用NUMBERSTRING函数,将阿拉伯数字(小写)转为中文数字(大写)来表示人民币的金额,但NUMBERSTRING函数的局限是:仅能计算整数,小数部分则要四舍五入,如图1-216所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_99_2.jpg?sign=1739182849-JYxqcovvfak1oIOFpxOhrHOdGhUePsMZ-0-5306a7439e0311469752e01f13142218)
图1-216 NUMBERSTRING函数的缺陷
还有一种方法:设置单元格格式,也可以将阿拉伯数字(小写)转为中文数字(大写)。如图1-217所示,在“设置单元格格式”对话框的“分类”栏中选择“特殊”,在“类型”中选择“中文大写数字”。但这种方法也有局限:小数部分只能“逐字直译”成大写,不能写成“几角几分”。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_100_1.jpg?sign=1739182849-lq1O3Zmr1ZLJSIWha7RK0hj6sfc8N7Xx-0-4bf6f6a9d6751efb22af422534285c99)
图1-217 设置人民币阿拉伯数字转成中文大写
以上两种方法都不完美,只能求助函数了。
【实现方法】
如图1-218所示,在B2单元格中输入公式“=SUBSTITUTE(SUBSTITUTE(IF(-RMB(A2,2),TEXT(A2,";负")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"),"零元整"),"零角",IF(A2^2<1,,"零")),"零分","整")”,按Enter键执行计算,再将公式向下填充,可实现完美转换。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_100_2.jpg?sign=1739182849-BRJq9aKwwhzO28sK7TsoGRYH4FwQuUvK-0-5d19063bb71440e80f64fe568d13c11f)
图1-218 “方法实现”人民币数字转成中文大写
【公式解析】
•-RMB(A2,2):按人民币格式将数值四舍五入到两位数并转换成文本。
•TEXT(A2,";负"):如果A2的金额小于0,则返回字符“负”。
•TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;"):金额取绝对值,整数部分转换为大写格式,参数+0.5%用于避免0.999元等的情况下计算出现错误。
•TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"):金额小数部分转换为大写。
•IF(-RMB(A2,2),TEXT(A2,";负")&TEXT(INT(ABS(A2)+0.5%),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(RMB(A2,2),2),"[dbnum2]0角0分;;整"),"零元整"):IF函数用于判断,如果金额不是0分,则返回大写格式的结果,否则返回零元整。
•用两个SUBSTITUTE函数替换“零角”为“零”,“零分”为“整”。