![Excel数据处理与可视化](https://wfqqreader-1252317822.image.myqcloud.com/cover/542/30918542/b_30918542.jpg)
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=1738930447-FMDUh1hujuifurOhCf5ZHXVuaIjGqRKI-0-e41274c288a64c4b1d30cbbf0db25c7e)
图1-193 INT函数取整举例
2)TRUNC函数取整
特征:不管数值是正数还是负数,都直接截掉数值的小数。
TRUNC函数取整举例如图1-194所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_91_2.jpg?sign=1738930447-3VoKpMyhFuvGZSWuxl3CrTBjN3bf9CTa-0-30c65068ef99c5bfbf1c2b24683294a5)
图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=1738930447-2o4c4T3j8wRxqXk0IAZnLsZGZcu2KVkV-0-ab61021e302976634c9af717afe57856)
图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=1738930447-PRJDb1zk8oKBsCaxBRXKt4Y7SGymwRKl-0-802477b2dd9e046a32fb34fb612d4ed7)
图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=1738930447-fR1mWaVJqo54nxehXmG2wK1e4xEnuyXl-0-69f601db3af0f92a1364fdef53aa31f0)
图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=1738930447-FtmUrZmtWpkqf8NcsFR4YnjkCm6cHgGM-0-60daa4eedcb210eec94d9b7fb3ecf7c0)
图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=1738930447-FAt93FNbRcE99RzHFchjfuSKlh7pOvdE-0-b69195138a1acbce206858cab153a92d)
图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=1738930447-WdCzF5hDRbpZoaYbYLtJ48dTGTKva7aX-0-f55e96a0c5aa8a00d0cfec14ff823b05)
图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=1738930447-FtZ75ccERQmegyodEr6kdzfe7H53Ehkw-0-ac0d31f854875004ba8fe523e5d4789d)
图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=1738930447-cW35dc37EPzc8etHJgQwP3gYiIIRyrDs-0-c750c38ec5fb76157e1e108142243ae3)
图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=1738930447-zQDXaZtPXoGgXvj9qYpgA7PW9TseUP5i-0-32be4fb10019ad1a68b50936fde4f93a)
图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=1738930447-yBkjbH5BT49mST7ZeAU3rPKzuUYZKRre-0-b4d098bea874d00ebd007cd04326e796)
图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=1738930447-pZB7vbIdJmBPi8vnrsdR9LBXvZ6zQLF4-0-943a1f27aee5fcbd2bf6c58bf69fe19a)
图1-205 EVEN函数的用法举例
EVEN函数的特征:
•参数只有一个,即要舍入的数值。
•舍入方式为沿绝对值增大的方向返回最接近的偶数。
2)舍入到奇数
ODD函数为舍入到奇数量身定制的函数。
ODD函数的用法举例如图1-206所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_95_2.jpg?sign=1738930447-VrcKjKcYGmNcnjYXCxnRdIaOwC4viLqU-0-cf29525c245f630570adf72183319b27)
图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=1738930447-MfdsRvcZPMeVNXJTA2nlrBgnOl2311Oc-0-476c6c9259e94441483ca341e08c431e)
其中,格式参数可以有1、2、3这3个值。
•格式参数为1:返回值采用普通的大写格式,如“七百八十九”。
•格式参数为2:返回值采用财务专用大写格式,如“柒佰捌拾玖”。
•格式参数为3:返回值采用仅数字大写格式,如“七八九”。
以“123456789”为例,不同的格式参数,转换成为的中文数字格式也不同,结果如图1-207所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_96_1.jpg?sign=1738930447-MaqWlGjGLOS0aIAF9Wee9C9RRav5w8uX-0-83e7ba87b97521c5badf0583aba58cbb)
图1-207 NUMBERSTRING不同格式参数的返回值
NUMBERSTRING函数的局限是:仅能计算整数。
(2)TEXT函数。它用来将数字转成中文大写格式,其语法为:
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_96_2.jpg?sign=1738930447-lFtU1qhydvTrT8sqV2x7mfUdCGqx6DxX-0-7cf4b9ce9e647f4dadee8dad73b5035d)
•格式参数为"[dbnum1]":返回值采用普通的大写格式,如“七百八十九”。
•格式参数为"[dbnum2]":返回值采用财务专用大写格式,如“柒佰捌拾玖”。
•格式参数为"[dbnum3]":返回值采用阿拉伯数字之间加单位格式,如“7百8十9”。
以“123456789”为例,不同的格式参数,转换成为的中文数字格式也不同,结果如图1-208所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_96_3.jpg?sign=1738930447-EgPgrkBdWmvA75yFazysSixoa6aAaqK9-0-d374de24a227114e32c65fd4ae079f12)
图1-208 TEXT函数不同格式参数的返回值
2)中文数字转为阿拉伯数字
不同形式的中文数字转为阿拉伯数字的公式参数也不同,如图1-209所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_96_4.jpg?sign=1738930447-Y77A2OS4bcYdPAUeVUnlAzVbBwNPNXo7-0-4a476bb3dd5b7a89e43e9900102e56fd)
图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=1738930447-Lv3nMXwyVS7DHxf4xn0lXMFcEsCi8TZp-0-5b1633747c673edfd5ddb5b2867057a5)
图1-210 交易记录
【实现方法】
(1)选项设置。单击“文件”→“选项”→“高级”,勾选“转换Lotus 1-2-3公式”项,如图1-211所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_97_2.jpg?sign=1738930447-QPzbrHhM5bKOGrXkcByHdDiVN3qbMDN8-0-f581136fd112a475efafc3b1fc57327d)
图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=1738930447-UftBp64gMO7oLT1QsGJMqLqEStnIDEYF-0-0a7b02777fec71ac10d8feb8718b7324)
图1-212 复制算式到结果区
选中C2:C8区域,单击“数据”→“分列”按钮,在打开的“文本分列向导-第1步”对话框中不做特殊修改,直接单击“完成”按钮,如图1-213所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_98_2.jpg?sign=1738930447-0dlXgmMXDgWUllILZ9YATvBLCMiTI9Jp-0-1fbce5f5a7ae3fce18dc4de4dc8a71fb)
图1-213 分列步骤
完成以后的结果,如图1-214所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_98_3.jpg?sign=1738930447-3ESekbK09NvHJWbMaVMKhaozdwARjbff-0-f2de94233ce316c46758350292bd8660)
图1-214 分列结果
(3)选项设置。单击“文件”→“选项”→“高级”→“转换Lotus 1-2-3公式”,将其前面的钩去除,如图1-215所示。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_99_1.jpg?sign=1738930447-ZI0xeNahHX0X1tUDa4oxPsQnSYf69GU9-0-c06307d5970d281eb16442d9fee0d4a5)
图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=1738930447-2JJKudQ5zbjhFoWhdiAn2z29WjZbpup0-0-2a403ae920802eb6fd20ddb552681849)
图1-216 NUMBERSTRING函数的缺陷
还有一种方法:设置单元格格式,也可以将阿拉伯数字(小写)转为中文数字(大写)。如图1-217所示,在“设置单元格格式”对话框的“分类”栏中选择“特殊”,在“类型”中选择“中文大写数字”。但这种方法也有局限:小数部分只能“逐字直译”成大写,不能写成“几角几分”。
![](https://epubservercos.yuewen.com/DF300B/16793576905322306/epubprivate/OEBPS/Images/36890_100_1.jpg?sign=1738930447-8ex19EPYZHirHQH5DGb9FBRoqjKzrwox-0-78636b83e702f64f44643b81a390c094)
图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=1738930447-gz1IUFO6pcT06UpCrR5LHf0tTn5Z5pW1-0-5d0360f56768194a5f87f710fa1f35af)
图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函数替换“零角”为“零”,“零分”为“整”。