首页 常识

元大写怎么写(Excel单元格中数字转成人民币大写方法)

100人浏览   2024-10-06 08:53:10


使用过Microsoft Excel电子表的人(尤其是财务人员),经常会遇到将阿拉伯数字转换成人民币大写的问题,如:在D25单元格中有自动求和后的一串阿拉伯数字“789456.65”元,需要在A25单元格中自动转换为“人民币大写:柒拾捌万玖仟肆佰伍拾陆元陆角伍分”,如果用手动去填写也未尝不可,但是,只要D25的数字一变,就得重新填写一次,非常麻烦,尤其是在进行财务报表应用时,就更不方便,如果能自动转换,就会方便得多。


如何才能实现这样复杂的函数运算呢?

我这里有一组条件运算的方法,这一组条件运算的方法,是基于G19单元格中阿拉伯数字值进行自动转换的,将这一组条件运算函数写到哪个单元格,这个单元格就会自动将G19中的阿拉伯数字转换成人民币大写数值,不信?您试试?

我们将G19单元格确定为数据汇总后的人民币小写数值(即阿拉伯数字),需要在B19单元格中自动转换成人民币大写数值,那么,请选定B19单元格,将下面的多个函数条件运算语句写入并按回车键,看看结果会怎样?

="人民币大写: "&IF((G19-INT(G19))=0,TEXT(G19,"[DBNUM2]")&"元整",IF(INT(G19*10)-G19*10=0,TEXT(INT(G19),"[DBNUM2]")&"元"&TEXT((INT(G19*10)-INT(G19)*10),"[DBNUM2]")&"角整",TEXT(INT(G19),"[DBNUM2]")&"元"&IF(INT(G19*10)-INT(G19)*10=0,"零",TEXT(INT(G19*10)-INT(G19)*10,"[DBNUM2]")&"角")&TEXT(RIGHT(G19,1),"[DBNUM2]")&"分"))

结果很明显,完全正确地实现了人民币大写转换!说到这,应该大功告成了。但是,大家可能会说:这一串函数运算是怎么回事?看不懂。是的,对于初学者来说,可能是很复杂也根本看不懂,那么,我就再哆嗦几句,给大家再讲一讲其运算的思路和方法吧。

要弄明白,还得讲清楚两个方面的问题:

第一方面:对于单元格中的人民币数值而言,有四种可能性出现:

即:整数(精确到元);1位小数(精确到角);2位小数(精确到分),中间出现零。因此,就有四种判断,是整数还是小数?是1位小数还是2位小数?中间是否出现零?

从上面的运算过程中可以看出,IF((G19-INT(G19))=0,TEXT(G19,"[DBNUM2]")&"元整"为整数时的条件运算方法,IF(INT(G19*10)-G19*10=0,TEXT(INT(G19),"[DBNUM2]")&"元"&TEXT((INT(G19*10)-INT(G19)*10),"[DBNUM2]")&"角整"为1位小数时的条件运算方法,而TEXT(INT(G19*10)-INT(G19)*10,"[DBNUM2]")&"角")&TEXT(RIGHT(G19,1),"[DBNUM2]")&"分"))则是有2位小数的条件运算方法,对于中间出现零,则用IF(INT(G19*10)-INT(G19)*10=0,"零"来进行运算。

第二方面:对于函数而言,我们必须弄明白以下几个函数的意义和语句格式。

1、条件判断函数IF:执行真假值判断,根据逻辑计算的真假值,返回不同结果。

可以使用函数 IF 对数值和公式进行条件检测。

语法

IF(logical_test,value_if_true,value_if_false)

Logical_test 表示计算结果为 TRUE 或 FALSE 的任意值或表达式。例如,A10=100 就是一个逻辑表达式,如果单元格 A10 中的值等于 100,表达式即为 TRUE,否则为 FALSE。本参数可使用任何比较运算符。

Value_if_true logical_test 为 TRUE 时返回的值。例如,如果本参数为文本字符串“预算内”而且 logical_test 参数值为 TRUE,则 IF 函数将显示文本“预算内”。如果 logical_test 为 TRUE 而 value_if_true 为空,则本参数返回 0(零)。如果要显示 TRUE,则请为本参数使用逻辑值 TRUE。Value_if_true 也可以是其他公式。

Value_if_false logical_test 为 FALSE 时返回的值。例如,如果本参数为文本字符串“超出预算”而且 logical_test 参数值为 FALSE,则 IF 函数将显示文本“超出预算”。如果 logical_test 为 FALSE 且忽略了 Value_if_false(即 value_if_true 后没有逗号),则会返回逻辑值 FALSE。如果 logical_test 为 FALSE 且 Value_if_false 为空(即 value_if_true 后有逗号,并紧跟着右括号),则本参数返回 0(零)。Value_if_false 也可以是其他公式。

2、向下舍取整数函数INT:这个函数的功能是将数字向下舍入到最接近的整数。

语法

INT(number)

Number 需要进行向下舍入取整的实数。

3、数值文本转换函数TEXT:将数值转换为按指定数字格式表示的文本。

语法

TEXT(value,format_text)

Value 为数值、计算结果为数字值的公式,或对包含数字值的单元格的引用。

Format_text 为“单元格格式”对话框中“数字”选项卡上“分类”框中的文本形式的数字格式。

4、返回字符串中最后1个或多个字符函数RIGHT:根据所指定的字符数返回文本字符串中最后一个或多个字符。

语法

RIGHT(text,num_chars)

Text 是包含要提取字符的文本字符串。

Num_chars 指定希望 RIGHT 提取的字符数。

5、文本运算符&:将两个文本值连接或串起来产生一个连续的文本值。

6、格式命令DBNUM2:将该单元格或字符串的格式设置为“特殊”格式中的“中文大写数字”格式。

讲清了可能出现的四种情况和几个运算函数,现在,再来谈谈条件运算的思路。要完全正确地进行人民币大写转换,就必须应用以上的条件判断通过函数运算来实现。

首先,要在字符串前面加上“人民币大写:”的中文字,并与后面的大写字符串连接起来,形成一个完整的书写格式,就必须应用文本运算符“&”,因此,语句开头必须写“="人民币大写: "&”,使它与后面的字符串连接起来,后面的“元”、“角”、“分”、“整”等均应用这个方法来实现。

第二,针对可能出现整数(即精确到元)的情况,需要判断是否为整数。应用“IF((G19-INT(G19))=0,TEXT(G19,"[DBNUM2]")&"元整"”语句进行条件判断和函数运算,如果G19单元格中的数值减去该单元格数值向下舍取整数后为0,则表明该数值为整数,那么,直接将该数值的格式设置为“特殊”格式中的“中文大写数字”格式,并在后面加上“元整”字符串,如果不是,则进行下面的判断。

第三,针对可能出现1位小数(即精确到角)的情况,需要继续进行判断其是否为1位小数。应用“IF(INT(G19*10)-G19*10=0,TEXT(INT(G19),"[DBNUM2]")&"元"&TEXT((INT(G19*10)-INT(G19)*10),"[DBNUM2]")&"角整"”语句进行条件判断和函数运算,如果该数值为1位小数,则该数值乘以10后向下舍取整数的值应与该数值直接乘以10的值相等,即INT(G19*10)-G19*10=0,当INT(G19*10)-G19*10=0时,说明条件为真,否则,进行下面的函数运算。

第四,针对可能出现2位小数(即精确到分)的情况,应用“TEXT(INT(G19*10)-INT(G19)*10,"[DBNUM2]")&"角")&TEXT(RIGHT(G19,1),"[DBNUM2]")&"分"”的语句进行函数运算,其原理与上述基本相同,不同之处是这里应用了返回文本字符串中最后一个或多个字符“RIGHT”。通过TEXT(RIGHT(G19,1),"[DBNUM2]")&"分"语句完成最后1位数值(即分)的转换。

第五,针对中间可能出现零的情况,需要应用“IF(INT(G19*10)-INT(G19)*10=0,"零"”语句来进行运算。

通过以上五种条件判断和函数运算,就可以正确地进行人民币大写数字转换了。


相关推荐