当前位置:文档之家› 金额大写转换函数

金额大写转换函数

金额大写转换函数
金额大写转换函数

金额大写转换函数

#region 金额大写转化

private static String[] Ls_ShZ = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" }; private static String[] Ls_DW_Zh = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" };

private static String[] Num_DW = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" };

private static String[] Ls_DW_X = { "角", "分" };

/// <summary>

/// 金额小写转中文大写。

/// 整数支持到万亿;小数部分支持到分(超过两位将进行Banker舍入法处

理)

/// </summary>

/// <param name="Num">需要转换的双精度浮点数</param>

/// <returns>转换后的字符串</returns>

public static String NumGetStr(Double Num)

{

Boolean iXSh_bool = false;//是否含有小数,默认没有(0则视为没有) Boolean iZhSh_bool = true;//是否含有整数,默认有(0则视为没有)

string NumStr;//整个数字字符串

string NumStr_Zh;//整数部分

string NumSr_X = "";//小数部分

string NumStr_DQ;//当前的数字字符

string NumStr_R = "";//返回的字符串

Num = Math.Round(Num, 2);//四舍五入取两位

//各种非正常情况处理

if (Num < 0)

return "不转换欠条";

if (Num > 9999999999999.99)

return "很难想象谁会有这么多钱!";

if (Num == 0)

return Ls_ShZ[0];

//判断是否有整数

if (Num < 1.00)

iZhSh_bool = false;

NumStr = Num.ToString();

NumStr_Zh = NumStr;//默认只有整数部分

if (NumStr_Zh.Contains("."))

{//分开整数与小数处理

NumStr_Zh = NumStr.Substring(0, NumStr.IndexOf("."));

NumSr_X = NumStr.Substring((NumStr.IndexOf(".") + 1), (NumStr.Length - NumStr.IndexOf(".") - 1));

iXSh_bool = true;

}

if (NumSr_X == "" || int.Parse(NumSr_X) <= 0)

{//判断是否含有小数部分

iXSh_bool = false;

}

if (iZhSh_bool)

{//整数部分处理

NumStr_Zh = ReverseString(NumStr_Zh);//反转字符串

for (int a = 0; a < NumStr_Zh.Length; a++)

{//整数部分转换

NumStr_DQ = NumStr_Zh.Substring(a, 1);

if (int.Parse(NumStr_DQ) != 0)

NumStr_R = Ls_ShZ[int.Parse(NumStr_DQ)] + Ls_DW_Zh[a] + NumStr_R; else if (a == 0 || a == 4 || a == 8)

{

if (NumStr_Zh.Length > 8 && a == 4)

continue;

NumStr_R = Ls_DW_Zh[a] + NumStr_R;

}

else if (int.Parse(NumStr_Zh.Substring(a - 1, 1)) != 0) NumStr_R = Ls_ShZ[int.Parse(NumStr_DQ)] + NumStr_R;

}

if (!iXSh_bool)

return NumStr_R + "整";

//NumStr_R += "零";

}

for (int b = 0; b < NumSr_X.Length; b++)

{//小数部分转换

NumStr_DQ = NumSr_X.Substring(b, 1);

if (int.Parse(NumStr_DQ) != 0)

NumStr_R += Ls_ShZ[int.Parse(NumStr_DQ)] + Ls_DW_X[b]; else if (b != 1 && iZhSh_bool)

NumStr_R += Ls_ShZ[int.Parse(NumStr_DQ)];

}

return NumStr_R;

}

public static string ReverseString(string s) {

char[] chars = s.ToCharArray();

Array.Reverse(chars);

return new string(chars);

}

#endregion 金额大写转化

小写金额转换为大写金额(C实现)

前言 银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。票据和结算凭证是银行、单位和个人凭以记载帐务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。因此,填写票据和结算凭证,必须做到标准化、规范化,要要素齐全、数字正确、字迹清晰、不错漏、不潦草,防止涂改。 我的服务需要一个金额转换过程,本来想在网上找,但都是C++、JavaScript、Delphi 的Demo,还没有C的。索性自己写一个。参考了其它的转换算法,对我有些启发。 大多的算法都是直接分析字符串生成大写金额,即存在一个假设:源字符串的格式是正确的。在我的过程中,用状态机的方法分析源字符串,错误时,返回空指针(我可不敢保证传给我的过程的都是##.##)。分析出源字符串中整数部有多少个数字,是否有小数,统计结果放在一个结构体中,整数和小数部分的数字分别放在两个整形数组里。 有了统计数据就可以生成大写金额了。转换过程有个难点:要区分万、亿等“段”,特别是个位这个“段”,这个概念是在《小写转大写金额在C++中的实现》文章中提到的。在下面的程序中用j= ( size - i - 1 ) & 0x3,实际上是j = ( size - i - 1 ) % 4取模,j==0时为段尾,需要特殊处理。所有的处理都是围绕0来进行的,也就是说,0才是难点。 特殊位置的0,按段分,段中第一个非0数字前的0,可能有多个;段中两个非0数字间的0;段尾的0;个位的0;十分位,角位置的0。 另外,转换的一个重点是大写金额的写法,好像大多的算法都注重转换过程而对这个问题没有深究。我在文章后面附上转换规则。 下面是代码 1./** 2.* @brief 将源字符串中的小写金额转换为大写格式 3.* 4.* @param dest 目的字符串 5.* @param src 小写金额字符串 6.* @return 7.* - NULL 源字符串的格式错误,返回NULL 8.* - 非NULL 目的字符串的首地址 9.* @note 转换根据:中国人民银行会计司编写的最新《企业、银行正确办理支付结 算 10.* 指南》的第114页-第115页 11.*/ 12.char* chineseFee( char* dest, char* src ) 13.{

如何将小写金额变成大写数值

如何将小写数值变成大写数值 =IF(C10<0,"金额为负无效",IF(OR(C10=0,C10=""),"零元整",IF(C10<1,"",TEXT(INT(C10),"[dbnum2]G/通用格式")&"元"))) & IF(INT(C10*10)-INT(C10)*10=0,IF(INT(C10)*(INT(C10*100)-INT(C10*10)*10)=0,"","零"),TEXT(INT(C10*10)-INT(C10)*10,"[dbnum2]")&"角")&IF((INT(C10*100)-INT(C10*10)*10)=0,"整",TEXT((INT(C10*100)-INT(C10*10)*10),"[dbnum2]")&"分") excel表格中如何将小写金额转换为大写金额,如数值为0时则不在表中显示,如数值为负时则显示“负***”=IF(H12=0,"",IF(INT(H12),TEXT(TRUNC(H12),"[dbnum2]")&"元","")&IF(MOD(H12,1)=0,"整",IF(TRUNC(H12,1),IF(H12=TRUNC(H12,1),TEXT(LEFT(RIGHT(H12*100,2)),"[dbnum2]0角整"),TEXT(RIGHT(H12*100,2),"[dbnum2]0"&IF(LEFT(RIGHT(H12*100,2))="0","","角")&"0分")),TEXT(H12*100,"[dbnum2]0分")))) 如何在excel中输入小写金额,自动转换为大写金额 假设Sheet1的A4是你阿拉伯合计金额,以下为Sheet2中的小写金额=Sheet1!A4 假设这个公式是在Sheet2的C6单元格里,以下为大写金额=IF(INT(C6)-C6=0,TEXT(C6,"[DBNum2][$-804]G/通用格式""元整"""),TEXT(INT(C6),"[DBNum2][$-804]G/通用格式""元""")&TEXT(RIGHT(INT(C6*10),1),"[DBNum2][$-804]G/通用格式""角""")&TEXT(RIGHT(INT(C6*100),1),"[DBNum2][$-804]G/通用格式""分""")) 解释:IF(INT(C6)-C6=0,一串,另一串),如果C6是整数(函数INT是取整的意思,取整后减去原数为0,说明是整数),返回一串,否则返回另一串。函数TEXT(数,”格式“)把数变为指定格式,而”[DBNum2][$-804]G/通用格式“就是中文大写格式。函数RIGHT(字符串,位数)返回字符串最后几位数。元角分也是格式的一部分,""在已经有的引号范围内表示一个引号。

Excel--手把手教你转换出中文大写金额

手把手教你转换出中文大写金额 大家在使用Excel的时候,是否会遇到要把一个或一些阿拉伯数字转换成中文大写金额的计算要求呢?如果只是偶尔需要对少数几个数字进行转换,干脆手工操作啦,但如果要进行转换的数字较多或经常要转换时,该怎么办呢?一向无往不胜的Excel能为你做些什么呢?其实,这个不难,最少有三种方法可以实现。 一、设置单元格格式: 用这个办法能直接将阿拉伯数字转换成中文大写金额,而且操作简单。右击需要转换的单元格,在弹出的快捷菜单中选择“单元格格式”,然后在“数字”选项卡中选择“自定义”,在“类型”中写入“[DBNum2]G/通用格式"元"”后按确定即可。瞧,321是不是已经变成了“叁佰贰拾壹元”了? 可惜的是,这个办法只能处理整数,而对带有小数的数字无能为力。当然也有过朋友通过对此法进行一定的扩展而可以处理部分带小数的数字,但效果不是很理想。 二、利用公式进行转换: 所谓“自力更生,丰衣足食”,这第三种方法就是自己编写公式进行转换。 为了照顾一些Excel初学者,我们先来了解一下什么是Excel里的公式与函数。Excel之所以计算功能异常强大,百分之八十的功劳就在于用户可以创建公式进行计算。所谓公式,实际上就是一个计算

表达式(通常是包含函数与单元格引用的计算表达式)。在Excel里,以“=”作为公式的标志,在任何一个非文本值类型的单元格内,只要以“=”开头,就必定是Excel公式,举一最简单的例子:如果A1、B1单元格的值为别为1和2,那么如果在C3单元格内输入“=A1+B1”,则Excel会自动将A1和B1的值相加,得到数值3,再返回给C3单元格。 再来说函数,函数其实就是包装好的公式,它能根据你提供的参数自动进行复杂的计算,从而最大限度地减轻你的工作量。Excel内置了大量具备各种功能的函数,而且Excel还允许用户自己添加函数,这样一来,在Excel里几乎没有计算不出来的东西了。拿Excel中较常用到的SUM函数来说,如果要计算从A1到A100单元格的数值总和,写公式时是用不着写成“=A1+A2+A3+……A100”的,而只是简单地写成“=SUM(A1:A10)”就可以了。 Excel中有上百种函数,今天我们只讲我们将要用到的几个。其实所有这些函数的功能及详细用法在Excel帮助文件里都有介绍,当你遇到具体计算要求时,只要你点击常用工具栏中“粘贴函数”按钮,Excel会将所有的函数一一展示在你眼前,结合相应的帮助文件,你可以迅速挑选到一个适合你的函数。 1、IF函数 这是Excel里最常用到的函数之一,它的功能是执行真假值判断,根据逻辑测试的真假值返回不同的结果。其语法为IF(判断表达式,当条件值为真时返回的值,当条件值为假时返回的值)。通俗地说,

手把手教你转换出中文大写金额

手把手教你转换出中文大写金额 Excel Home 2002-3-14 21:43:36 大家在使用Excel的时候,是否会遇到要把一个或一些阿拉伯数字转换成中文大写金额的计算要求呢?如果只是偶尔需要对少数几个数字进行转换,干脆手工操作啦,但如果要进行转换的数字较多或经常要转换时,该怎么办呢?一向无往不胜的Excel能为你做些什么呢?其实,这个不难,最少有三种方法可以实现。 一、设置单元格格式: 用这个办法能直接将阿拉伯数字转换成中文大写金额,而且操作简单。右击需要转换的单元格,在弹出的快捷菜单中选择“单元格格式”,然后在“数字”选项卡中选择“自定义”,在“类型”中写入“[DBNum2]G/通用格式"元"”后按确定即可。瞧,321是不是已经变成了“叁佰贰拾壹元”了? 可惜的是,这个办法只能处理整数,而对带有小数的数字无能为力。当然也有过朋友通过对此法进行一定的扩展而可以处理部分带小数的数字,但效果不是很理想。 二、利用中文大写金额转换函数: 先别急,这个函数你在Excel里是找不到的,微软毕竟不是大陆公司!这个函数被收集在本站开发的“Excel 扩展函数集”里,下载这个函数集,按说明进行安装后,在Excel中运用一个叫EHDXRMB()的函数就可以将任意数字转换成中文大写金额。具体情况在此就不多进行介绍了。 三、利用公式进行转换: 所谓“自力更生,丰衣足食”,这第三种方法就是自己编写公式进行转换。虽然吝啬的小编连白开水也舍不得给我,但我还是一如既往地发扬大公无私之精神将独门密技告之天下,包学包会,不会免费再学……(小编:STOP!再要是废话就OUT!) 为了照顾一些Excel初学者,我们先来了解一下什么是Excel里的公式与函数。Excel之所以计算功能异常强大,百分之八十的功劳就在于用户可以创建公式进行计算。所谓公式,实际上就是一个计算表达式(通常是包含函数与单元格引用的计算表达式)。在Excel里,以“=”作为公式的标志,在任何一个非文本值类型的单元格内,只要以“=”开头,就必定是Excel公式,举一最简单的例子:如果A1、B1单元格的值为别为1和2,那么如果在C3单元格内输入“=A1+B1”,则Excel会自动将A1和B1的值相加,得到数值3,再返回给C3单元格。 再来说函数,函数其实就是包装好的公式,它能根据你提供的参数自动进行复杂的计算,从而最大限度地减轻你的工作量。Excel内置了大量具备各种功能的函数,而且Excel还允许用户自己添加函数(就像第二种方法中笔者写的那个),这样一来,在Excel里几乎没有计算不出来的东西了。拿Excel中较常用到的SUM函数来说,如果要计算从A1到A100单元格的数值总和,写公式时是用不着写成 “=A1+A2+A3+……A100”的,而只是简单地写成“=SUM(A1:A10)”就可以了。 Excel中有上百种函数,今天我们只讲我们将要用到的几个。其实所有这些函数的功能及详细用法在Excel 帮助文件里都有介绍,当你遇到具体计算要求时,只要你点击常用工具栏中“粘贴函数”按钮,Excel会将所有的函数一一展示在你眼前,结合相应的帮助文件,你可以迅速挑选到一个适合你的函数。 1、IF函数 这是Excel里最常用到的函数之一,它的功能是执行真假值判断,根据逻辑测试的真假值返回不同的结果。其语法为IF(判断表达式,当条件值为真时返回的值,当条件值为假时返回的值)。通俗地说,就是“如果……就……否则”的语法结构。比如A1单元格内为学生成绩,我们现在要在B1单元格计算此成绩是否及格,则公式为“=IF(A1<60,"不及格","及格")”,这样一来,如果A1的数值小于60,B1就会显示“不及格”,否则就显示“及格”,是不是挺简单?IF函数是允许嵌套的,也就是说IF函数里面还可以有IF函数,这样就可以执行比较复杂的判断了。 2、TRUNC函数 这个函数可以截去指定位数的小数,如果将小数部分全部截去,就可以得到一个整数。要注意,截去是指

Excel中如何将货币数值由数字金额自动转为中文大写金额

Excel中如何将货币数值由数字金额自动转为中文大写金额 使用Excel时有时会用数据的转换,尤其是做财务工作,如工资表等时就需要用中文大写金额。如果手动输入,就会麻烦一些,多的时候也会增加了工作量。我们可以使用Excel中的函数来实现将货币数值由数字金额自动转换成中文大写金额。 本文以一份表格为例讲解如何将数字金额转换为中文大写金额。 先在Excel表格中算出合计金额,如下图。 利用公式把小写的货币转换为中文大写,并写在合并的单元格中。公式如下:

=IF((I41-INT(I41))=0,TEXT(I41,"[DBNUM2]")&"元整 ",IF(INT(I41*10)-I41*10=0,TEXT(INT(I41),"[DBNUM2]")&"元 "&TEXT(INT(I41*10)-INT(I41)*10,"[DBNUM2]")&"角整 ",TEXT(INT(I41),"[DBNUM2]")&"元"&IF(INT(I41*10)-INT(I41)*10,"零",TEXT(INT(I41*10)-INT(I41)*10,"[DBNUM2]")&"角 ")&TEXT(RIGHT(I41,1),"[DBNUM2]")&"分"))。 把公式输入合计右边的合并单元格中,如下图。 输入后的显示结果如下图。

公式中一共用到了4函数,文本连接符“&”及相应的汉字。下面对这4种函数做个讲解: IF函数:是一个条件判断函数,该函数的基本格式是:IF(a,b,c),其中“a”是一个条件,“b”和“c”是两种判断结果,可以表述为:如果条件a成立,那么结果是b,否则结果就是c。以上公式是一个多层嵌套判断函数,根据货币金额的不同情况生成不同格式的中文大写。 INT函数:是一个取整函数,取参数数字的整数部分。如:INT(I41)是取I41这个单元格数字的整数部分,(I41-INT(I41))=0表示一个整数,INT(I41*10)-INT(I41)*10表示I41单元小数点后第一位数,

金额大写转换函数

金额大写转换函数 #region 金额大写转化 private static String[] Ls_ShZ = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" }; private static String[] Ls_DW_Zh = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" }; private static String[] Num_DW = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" }; private static String[] Ls_DW_X = { "角", "分" }; /// <summary> /// 金额小写转中文大写。 /// 整数支持到万亿;小数部分支持到分(超过两位将进行Banker舍入法处

在Excel中制作人民币大写金额转换函数

在Excel中制作人民币大写金额转换函数 我在用Excel进行财务统计时,将数值转换成人民币中文大写金额一般是采用将单元格格式自定义为“[dbnum2]&元”这种方法。但是在输入带有小数的数值时却出现了问题,比如在输入123.4的时候,变为“壹佰贰拾叁.肆元”,这样子是不符合财务格式的,应该是“壹佰贰拾叁元肆角”才对。那么能不能在Excel中实现将任意数值转为人民币大写金额呢? 一、解决问题的思路 在Excel中自定义一个函数,该函数可以将任意数值转换为人民币大写金额。编制该函数代码时我是这样考虑:将输入的数值分为整数、十分位、百分位三个部分,将这几个部分单独转换为[dbnum2] 格式,再根据出现的各种可能和字符“元”、“角”、“分”进行组合。 二、自定义Excel函数 进入Visual Basic 开发环境,选择“插入→模块”,在出现的代码窗口输入如下代码: Function d(q) ybb = Round(q * 100) '将输入的数值扩大100倍,进行四舍五入 y = Int(ybb / 100) '截取出整数部分 j = Int(ybb / 10) - y * 10 '截取出十分位 f = ybb - y * 100 - j * 10 '截取出百分位 zy = Application.WorksheetFunction.Text(y, "[dbnum2]") '将整数部分转为中文大写 zj = Application.WorksheetFunction.Text(j, "[dbnum2]") '将十分位转为中文大写 zf = Application.WorksheetFunction.Text(f, "[dbnum2]")

人民币小写金额转换成大写格式

人民币小写金额转换成大写格式 要将人民币小写金额转换成大写格式,用Excel提供的格式,将自定义格式类型中的“[dbnum2]G/通用格式”改为“[dbnum2] G/通用格式“元””来实现。但在转换小数时却出现了问题,比如¥6,050.09只能转换为“陆仟零伍拾.零玖圆”。那么用Excel 能不能解决这一先天不足呢?其方法有以下两种(以下均对B1转换,假设B1是通过函数ROUND( )四舍五入取得二位小数的小写金额数,其值为¥6,050.09)。 一、在三个连续的同行单元格中转换 1. B2中输入公式“=IF(B1〈0,"金额为负无效",INT(B1))”,计算结果为¥6,050.00,然后点击“格式→单元格→数字→特殊→中文大写数字→确定”,B2显示“陆仟零伍拾”,再点击“格式→单元格→数字→自定义”,将“类型”编辑框中的“[dbnum2]G/通用格式”修改为:[dbnum2](“人民币”)G/通用格式“元”,此时B2显示:“(人民币)陆仟零伍拾元”。 2. C2中输入“=IF(B1〈0,"",INT(B1 10)-INT(B1) 10)”,同样C2改为:[DBNum2]G/通用格式“角”,C2显示:“零角”。 3. D2中输入“=IF(B1〈0,"",INT(B1 100)-INT(B1 10) 10)”,同样D2改为:[DBNum2]G/通用格式“分”, D2显示:“玖分”。 这样在连续的三个同行单元格中实现了大写金额格式的转换,如图1所示。为了使转换符合财务格式,B2应右对齐,C2列宽无间隔,且不设左右边框线,D2要左对齐。

二、用Excel提供的函数转换 个位为0,则不显示;不为0,显示“XXX元”;不为0、且角位和分位均为0,显示“XXX元整”;元角分位均为0,则显示“零元整”。 小数点后面第一位为0、且元位或分位有一为0,则不显示;为0、且元位和分位均不为0,则显示“零”;不为0,显示“X角”。 小数点后面第二位为0,则显示“整”;不为0,显示“X分”。 根据以上思路在B2中输入公式: “IF(B1〈0,"金额为负无效",IF(OR(B1=0,B1=""),"(人民币)零元整")); IF(B1〈1,"(人民币)",TEXT(INT(B1),"[dbnum2](人民币)G/通用格式")&&"元")&&IF(INT(B1 10)-INT(B1) 10=0); IF(INT(B1) (INT(B1 100)-INT(B1 10) 10)=0,"","零"),TEXT(INT(B1 10)-INT(B1) 10,"[dbnum2]")&&"角")&&IF((INT(B1 100)-INT(B1 10) 10)=0,"整",TEXT((INT(B1 100)-INT(B1*10)*10),"[dbnum2]")&&"分")))”。 确认后B2显示:“(人民币)陆仟零伍拾元零玖分”。以后使用时将公式复制到有关单元格中,若转换的对象B1发生了变化,可点击“编辑→替换”将B1替换掉。两种转换测试结果如图2所示。

将数字转为中文金额的大写方式Java版

将数字转为中文金额的大写方式(Java版) 将数字转为中文金额的大写方式(Java版) /** * 程序目的: * 从命令行接收一个数,并将其转化为中文金额的大写方式 * 例如123.45 --> 壹佰贰拾叁元肆角伍分 * @author LovinChan * * 看到网上有很多这样的例子程序,不过觉得很不满意。有些程序我从命名上就觉得* 实在是不符合规范,程序里面的算法没有让人明白得很清楚的注释,读上去觉得有* 点难度,可读性不强。而且很多程序还存在不少bug,随便一测就测出来了。 * 所以本人还是决定重新写一下这个程序,并且尽量做到消除不必要的bug。这个程* 序我没有用什么很精妙的算法,不过用了一些Java类库中的类,像是正则表达式之类* 的东西。由于本人对算法不怎么在行,在做转换操作的时候用的是很笨的方法。望各位 * 大虾海涵,呵呵。 * * 程序的注释我尽量写得详细一点,如果觉得这个程序哪里有问题或者是哪里有改进的 * 地方欢迎随时跟我交流。 * 我的msn:egg.chenlw@https://www.doczj.com/doc/2013278618.html, * QQ:543669516(注上为什么加我就可以了) * 我的blog:https://www.doczj.com/doc/2013278618.html,/egg_chen * 欢迎交流 */ public class Trans2RMB { /** * 测试程序的可行性 * @param args */ public static void main(String[] args) { System.out.println("\n--------将数字转换成中文金额的大写形式------------\n"); Trans2RMB t2r = new Trans2RMB(); String s = t2r.cleanZero(t2r.splitNum(t2r.roundString(t2r.getNum()))); // 如果转换过后是一个空串,则不输出屏幕 if(!"".equals(s)) { System.out.println("转换成中文后为:" + s);; } System.out.println("\n---------------------------------------------");

EXCEL表中如何用函数把数字转化成中文大写金额格式

EXCEL表中如何用函数把数字转化成中文大写金额格式 (2008-03-09 10:18:25) 标签:分类: 在EXCEL表中把数字转化成中文大写金额格式是财务人员在日常工作中的一个难题,虽然在EXCEL中的单元格格式设置中有一个特殊格式中可以转换在中文大写数字,但不能给出元、角、分整的中文金额特定格式,许多财务人员为之一筹莫展,最后只能手工输入,降低了EXCEL的使用效率,但如果TRUNC工作表函数,这个问题将迎刃而解, 如单元格A1=123459.72,须在某一格记录其中文大写金额,则在该格内输入函数: ="大写人民币:"&IF(TRUNC(A1)=0,"",TEXT(TRUNC(A1),"[DBNum2]G/通用格式")&"元 ")&IF(TRUNC(A1*10)-TRUNC(A1*10,-1)=0,IF(TRUNC(A1*100)-TRUNC(A1*100,-1)<>0,"零",""),TEXT(TRUNC(A1*10)-TRUNC(A1*10,-1),"[DBNum2]G/通用格式")&"角 ")&IF(TRUNC(A1*100)-TRUNC(A1*100,-1)=0,"",TEXT(TRUNC(A1*100)-TRUNC(A1*100,-1), "[DBNum2]G/通用格式")&"分")&IF(TRUNC(A1*100)-TRUNC(A1*100,-1)=0,"整","") 回车后将得到完整的大写中文金额格式,这个函数将广泛应用于支票 大家知道,在Excel中,可以通过设置单元格格式,把单元格的阿拉伯数字直接以中文数字形式来显示,但该格式并不适用于显示票据大写金额。我以前在使用Foxpro时,是通过自定义函数,把小写金额的数字转化为字符后,进行分析转换的。当然,在Excel中也可以使用VBA来编写自定义函数,但这种方式对不利于表格共享。实际上,Excel中的中文大写数字格式功能,已经基本能够解决整数的大写金额显示的问题,我们所要解决的是当金额出现角分位的情况。解决的方法是使用复合函数,考虑到人民币的单位是元,辅币有角分两个单位,一般金额取值的精确度为小数后两位。同时,当金额有角位没有分位时,大写金额后可写“整”也可以不写“整”,此时较为规范的写法是不要写“整”字。那么,函数设置可以这样考虑:如果金额为零直接显示“”;对于数值元位以上部分,利用Excel的中文大写数字表示法在中文大写数字后直接加“元”字表示;如果元以上金额为空,则直接显示空字符;如果金额为整数,直接在中文数字后加“整”字;如果角位为零分位不为零,角位上写“零”;

电子表格中将数字转换为大写金额

【Excel案例】电子表格中将数字转换为大写金额(1个公式,8个函数应用详解... 案例说明: 公司财务对往来账业务进行处理过程中,需打印付款单,要求在录入小写“付款金额”后,大写金额自动填列。 单元格S93函数编辑如下: =IF(ROUND(S93,2)<0,"无效数值",IF(ROUND(S93,2)=0,"零",IF(ROUND(S93,2)<1,"",TEXT(INT(ROUND(S93,2)),"[dbnum2]")&"元 ")&IF(INT(ROUND(S93,2)*10)-INT(ROUND(S93,2))*10=0,IF(INT(ROUND(S93,2))*(INT(ROUND(S93,2)*100)-INT(ROUND(S93,2)*10)*10)=0,"","零 "),TEXT(INT(ROUND(S93,2)*10)-INT(ROUND(S93,2))*10,"[dbnum2]")&"角")&IF((INT(ROUND(S93,2)*100)-INT(ROUND(S93,2)*10)*10)=0,"整 ",TEXT((INT(ROUND(S93,2)*100)-INT(ROUND(S93,2)*10)*10),"[dbnum2]")&"分"))) 函数应用分析: 一、ROUND,数学和三角函数:将数字按指定位数舍入 (ROUND(S93,2),即对单元格S93的内容进行四舍五入处理,且保留两位小数 INT(ROUND(S93,2),即对单元格S93在进行四舍五入保留两位小数的基础上,去掉小数点后面的位数,即只显示整数,此时,INT(ROUND(S93,2)和INT(S93)效果是一样的

T打印模版金额转换为大写金额流程

问题:企管通打印模板中的合计金额大写取数不正确,如果只有一行记录取数,如果是多行记录大写合计金额会翻倍。 解决方案一:通过四舍五入的函数Round实现。Round函数是按指定位数四舍五入某个数字。1,填制一张有小数的销货单。 2,打开销货单的打印模板设置,选择“含税金额”下的非合计行显示含税金额的大写, 将模板中第12行合并单元格,合并之后选择该单元格按“=”号键,在上面输入公式Round (K10,0)(注:“K10”为含税金额单元格,公式中的“0”代表小数位为0,即取单元格K10中的数据,并将数据的通过四舍五入设置小数位为0位) 如演示单据的小数位为2,则设置金额大写的单元格公式为Round(K10,2)。

3,设置完公式以后,点中单元格右键-设置单元格格式,点中“特殊格式”-中文货币大写,再点开“输入”页签,“大小写控制”-“自动转为大写”:

保存后预览: 解决方案二:可以试着这样操作:在非明细行上,设置公式,使用CELL函数进行设置。例如:用户设置一页打印10行数据。可以在汇总单元格上(非合计行上)设置公式CELL(列号,行号,0),如,CELL(1,1,0)+CELL(1,2,0)+CELL(1,3,0)表示计算第一列的前三行相加即表示SUM(A1:A3),这样就能取到对应的数据。 步骤1 :在非明细行中,点中某个单元格,按“=”号输入公式:

如果我们要取金额那行的大写合计,那么使用公式CELL(列号,行号,0),列号就是金额那列,为第8列;假设每页打印5行,那么行号就分别是1,2,3,4,5,那么公式为:注意,输入公式的时候要切换到纯英文状态下。 步骤2:设置完公式以后,点中单元格右键-设置单元格格式,点中“特殊格式”-中文货币大写,再点开“输入”页签,“大小写控制”-“自动转为大写”:

把金额转换为大写

using System; namespace HaiNuo { /***************************************************************************************** * 类名:DecimalToUpper * 功能:把金额数据从小写转换为大写 * 限制条件:金额小于一万亿,且少于两位小数 * 作者:雷俊强junqiang_china@https://www.doczj.com/doc/2013278618.html, * 日期:2003-5-6 * 用法:DecimalToUpper x = new DecimalToUpper(); * this.textBox2.Text = x.ToUpper(d); * 欢迎下载、使用 * * FOR my wife and my son * *****************************************************************************************/ public class DecimalToUpper { public DecimalToUpper()

{ // // TODO: 在此处添加构造函数逻辑 // } ///

/// 小写金额转换为大写金额,其他条件:金额小于一万亿,最多两位小数 /// /// 源金额,d 《1000000000000.00(一万亿),且最多两位小数 /// 结果,大写金额 public string ToUpper(decimal d) { if (d == 0) return "零元整"; string je = d.ToString("####.00"); if (je.Length > 15) return ""; je = new String('0',15 - je.Length) + je; //若小于15

Excel中金额大小写转换

Excel中金额大小写转换 一、Excel中金额大小写转换公式 公式1: “=IF(ROUND(E19,2)=0,"",IF(ROUND(ABS(E19),2)>=1,TEXT(INT(ROUND(ABS(E19),2)),"[ DBNum2]")&"元","")&IF(RIGHT(TEXT(E19,".00"),2)*1=0,"整 ",IF(RIGHT(TEXT(E19,".00"),4)*1>=1,IF(RIGHT(TEXT(E19,".00"),2)*1>9,"","零 "),IF(ROUND(ABS(E19),2)>=1,"零 ",""))&IF(RIGHT(TEXT(E19,".00"),2)*1>9,TEXT(LEFT(RIGHT(TEXT(E19,".00"),2)),"[DBNu m2]")&"角 ","")&IF(RIGHT(TEXT(E19,".00"))*1>0,TEXT(RIGHT(TEXT(E19,".00")),"[DBNum2]")&"分","整")))” 公式2:“=IF(F4<1,IF(F4<0.1,TEXT(INT(F4*100),"[DBNum2]G/通用格式")&"分 ",IF((INT(F4*100)-INT(F4*10)*10=0),TEXT(INT(F4*10),"[DBNum2]G/通用格式")&"角整",TEXT(INT(F4*10),"[DBNum2]G/通用格式")&"角 "&TEXT(INT(F4*100)-INT(F4*10)*10,"[DBNum2]G/通用格式")&"分 ")),TEXT(INT(F4),"[DBNum2]G/通用格式"&"元 ")&IF((INT(F4*10)-INT(F4)*10)=0,IF((INT(F4*100)-INT(F4*10)*10)=0,"","零 "),IF((INT(F4*0.1)-INT(F4)*0.1)=0,"零","")&TEXT(INT(F4*10)-INT(F4)*10,"[DBNum2]G/通用格式")&"角")&IF((INT(F4*100)-INT(F4*10)*10)=0,"整 ",TEXT(INT(F4*100)-INT(F4*10)*10,"[DBNum2]G/通用格式")&"分"))” 公式3:“=IF(B10<1,IF(B10<0.1,TEXT(INT(B10*100),"[DBNum2]G/通用格式")&"分 ",IF((INT(B10*100)-INT(B10*10)*10=0),TEXT(INT(B10*10),"[DBNum2]G/通用格式")&"角整",TEXT(INT(B10*10),"[DBNum2]G/通用格式")&"角 "&TEXT(INT(B10*100)-INT(B10*10)*10,"[DBNum2]G/通用格式")&"分 ")),TEXT(INT(B10),"[DBNum2]G/通用格式"&"元 ")&IF((INT(B10*10)-INT(B10)*10)=0,IF((INT(B10*100)-INT(B10*10)*10)=0,"","零 "),IF((INT(B10*0.1)-INT(B10)*0.1)=0,"零 ","")&TEXT(INT(B10*10)-INT(B10)*10,"[DBNum2]G/通用格式")&"角 ")&IF((INT(B10*100)-INT(B10*10)*10)=0,"整 ",TEXT(INT(B10*100)-INT(B10*10)*10,"[DBNum2]G/通用格式")&"分"))” 二、Excel中金额大小写转换函数[=ntoc(单元格)] 使用加载宏方法: “工具栏”→“宏”→“V isual Basic编辑器”,在“Visual Basic编辑器”中顶部选“插入”→“模块”,在“模块”对话框中选“通用”,并在编辑区域内粘贴以下内容: Function NtoC(n) 'n as single Const cNum = "零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分" Const cCha = "零仟零佰零拾零零零零零亿零万零元亿万零角零分零整-零零零零零亿万元亿零整整" NtoC = "" sNum = Trim(Str(Int(n * 100)))

EXCEL函数数字小写换大写

EXCEL文本函数-数字小写换大写/英文大小写互换 2007年10月17日星期三 13:04 在大小写中英文互换公式中我们先假设每个表都有表头,且数字在第二行,在A2单元格内 注意:公式可以随意拖动至任意指定单元格,公式内对象不变;可复制(待鼠标变成黑色十字再拖);也可利用查找-替换-全部替换单元格如A2---全部换成F15 EXCEL中数字小写换大写方法一: 在单元格A2中输入小写数字123.12 B2处输入以下公式 =SUBSTITUTE(SUBSTITUTE(IF(A2<0,"负","")&TEXT(TRUNC(ABS(ROUND(A2,2))),"[DBNum2]")&"元 "&IF(ISERR(FIND(".",ROUND(A2,2))),"",TEXT(RIGHT(TRUNC(ROUND(A2,2)*10)),"[DBNum2]"))&IF(I SERR(FIND(".0",TEXT(A2,"0.00"))),"角 ","")&IF(LEFT(RIGHT(ROUND(A2,2),3))=".",TEXT(RIGHT(ROUND(A2,2)),"[DBNum2]")&"分 ",IF(ROUND(A2,2)=0,"","整")),"零元零",""),"零元","") EXCEL中数字小写换大写方法二: 在单元格A2中输入小写数字123.12 B2处输入以下公式 =IF((INT(A2*10)-INT(A2)*10)=0,TEXT(INT(A2),"[DBNum2]G/通用格式")&"元 "&IF((INT(A2*100)-INT((A2)*10)*10)=0,"整","零 "&TEXT(INT(A2*100)-INT(A2*10)*10,"[DBNum2]G/通用格式")&"分"),TEXT(INT(A2),"[DBNum2]G/通用格式")&"元 "&IF((INT(A2*100)-INT((A2)*10)*10)=0,TEXT((INT(A2*10)-INT(A2)*10),"[DBNum2]G/通用格式")&"角整",TEXT((INT(A2*10)-INT(A2)*10),"[DBNum2]G/通用格式")&"角 "&TEXT(INT(A2*100)-INT(A2*10)*10,"[DBNum2]G/通用格式")&"分")) EXCEL中数字小写换大写方法三: =IF(A2-INT(A2)=0,TEXT(INT(A2),"[DBNum2]G/通用格式")&"圆整",TEXT(INT(A2),"[DBNum2]G/通用格式")&"圆"&TEXT(INT((A2-INT(A2))*10),"[DBNum2]G/通用格式")&"角 "&TEXT(INT((A2*10-INT(A2*10))*10),"[DBNum2]G/通用格式")&"分") EXCEL中数字小写换大写方法四: =IF((A2-INT(A2))=0,TEXT(A2,"[DBNUM2]")&"元整 ",IF(INT(A2*10)-A2*10=0,TEXT(INT(A2),"[DBNUM2]")&"元 "&TEXT((INT(A2*10)-INT(A2)*10),"[DBNUM2]")&"角整",TEXT(INT(A2),"[DBNUM2]")&"元 "&IF(INT(A2*10)-INT(A2)*10=0,"零",TEXT(INT(A2*10)-INT(A2)*10,"[DBNUM2]")&"角 ")&TEXT(RIGHT(A2,1),"[DBNUM2]")&"分")) 看看结果是不是出现了你想要的?应该有你需要的大写金额了 公式的由来: 仟分位公式如下: =TEXT(IF(LEN(INT($A1))>=4,MID($A1,LEN(INT($A1))-3,1),""),"[DBNum2]")

阿拉伯数字转换成英文大写

启动Microsoft Excel。 按Alt+F11 启动Visual Basic 编辑器。 在“插入”菜单上,单击“模块”。 在模块表中键入下面的代码。 Option Explicit 'Main Function Function SpellNumber(ByValMyNumber) Dim Dollars, Cents, Temp Dim DecimalPlace, Count ReDimPlace(9) As String Place(2) = " Thousand " Place(3) = " Million " Place(4) = " Billion " Place(5) = " Trillion " ' String representation of amount. MyNumber = Trim(Str(MyNumber)) ' Position of decimal place 0 if none. DecimalPlace = InStr(MyNumber, ".") ' Convert cents and set MyNumber to dollar amount. If DecimalPlace> 0 Then Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _ "00", 2)) MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) End If Count = 1 Do While MyNumber<> "" Temp = GetHundreds(Right(MyNumber, 3)) If Temp <> "" Then Dollars = Temp &Place(Count) & Dollars If Len(MyNumber) > 3 Then MyNumber = Left(MyNumber, Len(MyNumber) - 3) Else MyNumber = "" End If Count = Count + 1 Loop Select Case Dollars Case "" Dollars = "No Dollars" Case "One" Dollars = "One Dollar" Case Else Dollars = Dollars &" Dollars" End Select Select Case Cents

Excel金额大写公式详解

Excel金额大写公式详解 人民币大写的公式很多,随便百度就能找到一堆,但网上的公式多无原理解析,知其然而不知其所以然,用的时候只能将公式复制过去,总有几分不完美 那么一起来追根究底吧,长文预警,今天的内容1400字 ================ 先搜个金额大写公式再就公式进行解析网上相关公式太多,选个稍微短点的,公式如下▼ =TEXT(LEFT(RMB(A1),LEN(RMB(A1))-3),'[>0][dbnum2] G/通用格式元;[<0]负[dbnum2]G/通用格式元;;') & TEXT(RIGHT(RMB(A1),2),'[dbnum2]0角0分;;整') 表示完全看不懂 1、如何快速看懂长公式? ▼Excel公式求值 Excel自带公式求值,可查看公式每步计算结果,通过查看每步计算结果分析思路在A1单元格中输入小写金额,B1中输入以上公式 选中B1单元格,【公式】-【公式审核】-【公式求值】 运行求值,查看每一步运算结果,如下图:通过查看计算步骤得知,金额小写转为大写主要通过格式转换函数TEXT函数,将金额分两部分转换为大写金额,整数部分大写小数

点部分大写 提到格式转换,Excel单元格格式设置中就有金额大写转换【数字】-【特殊】-【中文大写数字】如A1单元格金额201711.06单元格格式转换后显示为贰拾万壹仟柒佰壹拾壹.零陆 距离我们想要的金额大写很接近了,如果能将数字大写格式转换的代码找到就可用于金额大写中 2、如何查看格式转换代码? ▼点击对应格式后,点击自定义,显示对应代码点击【特殊】-【中文大写数字】后点击自定义代码为 【[DBNum2][$-804]G/通用格式】 其中[$-804]表示国家或地区(语言)编号,一般可以不填,可直接忽略 提取有用部分:[DBNum2]G/通用格式其中[DBNum2]表示将数字大写G/通用格式表示以常规的数字显示——数字不发生任何变化 金额大写中,整数部分以元结尾,小数部分以角和分结尾▼则整数部分- [DBNum2]G/通用格式元小数部分- [DBNum2]0角0分 如果金额为负怎么办? 金额为负,则大写时金额前面加负,如-2对应负贰元,整数部分金额需分两种情况▼①为正数[>0][dbnum2]G/通用

相关主题
文本预览
相关文档 最新文档