收藏 分销(赏)

这样将EXCEL中的数字变成中文大写.doc

上传人:仙人****88 文档编号:9280119 上传时间:2025-03-19 格式:DOC 页数:6 大小:37KB 下载积分:10 金币
下载 相关 举报
这样将EXCEL中的数字变成中文大写.doc_第1页
第1页 / 共6页
这样将EXCEL中的数字变成中文大写.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
这样将EXCEL中的数字变成中文大写 2009年05月31日 星期日 06:13 (1)单纯数字      右键选该单元格,设置单元格格式,数字,特殊,中文大写 (2)文字和数字组合      比如数字在A1格为456,要在B1格得到肆佰伍拾陆元整,函数如下“=TEXT(A1,"[Dbnum2]")&"元整"”,其中[dbnum2] 是格式函数, 数字转中文大写,有一内建函数与 [dbnum2]有相同作用, 是numberstring 以上函数也可以写成“=numberstring(A1,2)&"元整"” (3)复杂数字转中文大写      比如,要将A1格的123456.65转变为壹拾贰万叁仟肆佰伍拾陆圆陆角伍分,在B1格输入以下公式 “=TEXT(TRUNC(A1),"[Dbnum2]")&"圆"&IF(ROUND((A1-TRUNC(A1))*100,1)<>0,IF(LEN(ROUND((A1-TRUNC(A1))*100,1))=1,"零角"&TEXT(ROUND((A1-TRUNC(A1))*100,1),"[Dbnum2]")&"分",TEXT((ROUND((A1-TRUNC(A1))*100,1)-MOD(ROUND((A1-TRUNC(A1))*100,1),10))/10,"[Dbnum2]")&"角"&TEXT(MOD(ROUND((A1-TRUNC(A1))*100,1),10),"[Dbnum2]")&"分"),"零角零分 ")” 另有网友编为: “=IF((INT(A1*10)-INT(A1)*10)=0,TEXT(INT(A1),"[DBNum2]")&"圆"&IF((INT(A1*100)-INT((A1)*10)*10)=0,"整","零"&TEXT(INT(A1*100)-INT(A1*10)*10,"[DBNum2]")&"分"),TEXT(INT(A1),"[DBNum2]")&"圆"&IF((INT(A1*100)-INT((A1)*10)*10)=0,TEXT((INT(A1*10)-INT(A1)*10),"[DBNum2]")&"角整",TEXT((INT(A1*10)-INT(A1)*10),"[DBNum2]")&"角"&TEXT(INT(A1*100)-INT(A1*10)*10,"[DBNum2]")&"分"))” 也不错,能显示整。 如题所示,在EXCEL里面,如何将123456这样的阿拉伯数字转换为中文大写呢,这里使用了一个函数,一个不常为人们使用的函数! NUMBERSTRING函数(没有人民币功能) 其用法是: NUMBERSTRING(数值,转换方式) 数值为已填写的数字或单元格数据,转换方式提供三种,参数分别为1,2,3;三种方式显示的中文各不相同,下面按图操作即可! 知识扩展: 博誉财税 TEXT(1234567890,"[DBNum1]") → 一十二亿三千四百五十六万七千八百九十 TEXT(1234567890,"[DBNum2]") → 壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾 维智财税 TEXT(1234567890,"[DBNum1]0") → 一二三四五六七八九○ TEXT(1234567890,"[DBNum2]0") → 壹贰叁肆伍陆柒捌玖零 第三种:(不太好用) 1.首先鼠标右键单击需要用大写金额显示的单元格。         2.(*假设此单元格金额为123.50元*) → 设置单元格格式 → 数字 → 自定义 → 在类型框中输入 [dbnum2]0"百"0"拾"0"元"0"角""整" 即可将选中的单元格中的数字显示为大写金额:(壹百贰拾叁元伍角整)。         (*假设此单元格金额为1234.51元*) → 设置单元格格式 → 数字 → 自定义 → 在类型框中输入 [dbnum2]0"千"0"百"0"拾"0"元"0"角"0"分""整" 即可将选中的单元格中的数字显示为大写金额:(壹千贰百叁拾肆元伍角壹分整)。 第四种:(不知怎么用~) 金额数字转中文大写 处理能力: 整数部分:9999999999999999(16位长,仟万亿) 小数部分:3位,多于3位舍去(不做四舍五入) 运行结果: 1.23 壹元贰角叁分 1234567890123456.123 壹仟贰佰叁拾肆万伍仟陆佰柒拾捌亿玖仟零壹拾贰万叁仟肆佰伍拾陆元壹角贰分叁厘 0.0798 柒分玖厘 10,001,000.09 壹仟万零壹仟元玖分 01.107700 壹元壹角柒厘 public class MoneyUtil { /** 大写数字 */ private static final String[] NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍", "陆",       "柒", "捌", "玖" }; /** 整数部分的单位 */ private static final String[] IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰",       "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" }; /** 小数部分的单位 */ private static final String[] DUNIT = { "角", "分", "厘" }; /**    * 得到大写金额。    */ public static String toChinese(String str) {     str = str.replaceAll(",", "");// 去掉","     String integerStr;// 整数部分数字     String decimalStr;// 小数部分数字     // 初始化:分离整数部分和小数部分     if (str.indexOf(".") &gt; 0) {       integerStr = str.substring(0, str.indexOf("."));       decimalStr = str.substring(str.indexOf(".") + 1);     } else if (str.indexOf(".") == 0) {       integerStr = "";       decimalStr = str.substring(1);     } else {       integerStr = str;       decimalStr = "";     }     // integerStr去掉首0,不必去掉decimalStr的尾0(超出部分舍去)     if (!integerStr.equals("")) {       integerStr = Long.toString(Long.parseLong(integerStr));       if (integerStr.equals("0")) {         integerStr = "";       }     }     // overflow超出处理能力,直接返回     if (integerStr.length() &gt; IUNIT.length) {       System.out.println(str + ":超出处理能力");       return str;     }     int[] integers = toArray(integerStr);// 整数部分数字     boolean isMust5 = isMust5(integerStr);// 设置万单位     int[] decimals = toArray(decimalStr);// 小数部分数字     return getChineseInteger(integers, isMust5) + getChineseDecimal(decimals); } /**    * 整数部分和小数部分转换为数组,从高位至低位    */ private static int[] toArray(String number) {     int[] array = new int[number.length()];     for (int i = 0; i < number.length(); i++) {       array = Integer.parseInt(number.substring(i, i + 1));     }     return array; } /**    * 得到中文金额的整数部分。    */ private static String getChineseInteger(int[] integers, boolean isMust5) {     StringBuffer chineseInteger = new StringBuffer("");     int length = integers.length;     for (int i = 0; i &lt; length; i++) {       // 0出现在关键位置:1234(万)5678(亿)9012(万)3456(元)       // 特殊情况:10(拾元、壹拾元、壹拾万元、拾万元)       String key = "";       if (integers == 0) {         if ((length - i) == 13)// 万(亿)(必填)           key = IUNIT[4];         else if ((length - i) == 9)// 亿(必填)           key = IUNIT[8];         else if ((length - i) == 5 && isMust5)// 万(不必填)           key = IUNIT[4];         else if ((length - i) == 1)// 元(必填)           key = IUNIT[0];         // 0遇非0时补零,不包含最后一位         if ((length - i) > 1 && integers != 0)           key += NUMBERS[0];       }       chineseInteger.append(integers == 0 ? key           : (NUMBERS[integers] + IUNIT[length - i - 1]));     }     return chineseInteger.toString(); } /**    * 得到中文金额的小数部分。    */ private static String getChineseDecimal(int[] decimals) {     StringBuffer chineseDecimal = new StringBuffer("");     for (int i = 0; i < decimals.length; i++) {       // 舍去3位小数之后的       if (i == 3)         break;       chineseDecimal.append(decimals == 0 ? ""           : (NUMBERS[decimals] + DUNIT));     }     return chineseDecimal.toString(); } /**    * 判断第5位数字的单位"万"是否应加。    */ private static boolean isMust5(String integerStr) {     int length = integerStr.length();     if (length > 4) {       String subInteger = "";       if (length &gt; 8) {         // 取得从低位数,第5到第8位的字串         subInteger = integerStr.substring(length - 8, length - 4);       } else {         subInteger = integerStr.substring(0, length - 4);       }       return Integer.parseInt(subInteger) &gt; 0;     } else {       return false;     } } public static void main(String[] args) {     String number = "1.23";     System.out.println(number + " " + MoneyUtil.toChinese(number));     number = "1234567890123456.123";     System.out.println(number + " " + MoneyUtil.toChinese(number));     number = "0.0798";     System.out.println(number + " " + MoneyUtil.toChinese(number));     number = "10,001,000.09";     System.out.println(number + " " + MoneyUtil.toChinese(number));     number = "01.107700";     System.out.println(number + " " + MoneyUtil.toChinese(number));
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服