在PowerBuilder中将小写金额转换成大写金额
php将金额数字转化为中文大写

php将⾦额数字转化为中⽂⼤写php将⾦额数字转化为中⽂⼤写echo toChineseNumber(1234567890);//壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾圆function toChineseNumber($money){$money = round($money,2);$cnynums = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");$cnyunits = array("圆","⾓","分");$cnygrees = array("拾","佰","仟","万","拾","佰","仟","亿");list($int,$dec) = explode(".",$money,2);$dec = array_filter(array($dec[1],$dec[0]));$ret = array_merge($dec,array(implode("",cnyMapUnit(str_split($int),$cnygrees)),""));$ret = implode("",array_reverse(cnyMapUnit($ret,$cnyunits)));return str_replace(array_keys($cnynums),$cnynums,$ret);}function cnyMapUnit($list,$units) {$ul=count($units);$xs=array();foreach (array_reverse($list) as $x) {$l=count($xs);if ($x!="0" || !($l%4))$n=($x=='0'?'':$x).($units[($l-1)%$ul]);else $n=is_numeric($xs[0][0])?$x:'';array_unshift($xs,$n);}return $xs;}代码⼆:/***数字⾦额转换成中⽂⼤写⾦额的函数*String Int $num 要转换的⼩写数字或⼩写字符串*return ⼤写字母*⼩数位为两位**/function num_to_rmb($num){$c1 = "零壹贰叁肆伍陆柒捌玖";$c2 = "分⾓元拾佰仟万拾佰仟亿";//精确到分后⾯就不要了,所以只留两个⼩数位$num = round($num, 2);//将数字转化为整数$num = $num * 100;if (strlen($num) > 10) {return "⾦额太⼤,请检查";}$i = 0;$c = "";while (1) {if ($i == 0) {//获取最后⼀位数字$n = substr($num, strlen($num)-1, 1);} else {$n = $num % 10;}//每次将最后⼀位数字转化为中⽂$p1 = substr($c1, 3 * $n, 3);$p2 = substr($c2, 3 * $i, 3);if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {$c = $p1 . $p2 . $c;} else {$c = $p1 . $c;}$i = $i + 1;//去掉数字最后⼀位了$num = $num / 10;$num = (int)$num;//结束循环if ($num == 0) {break;}}$slen = strlen($c);while ($j < $slen) {//utf8⼀个汉字相当3个字符$m = substr($c, $j, 6);//处理数字中很多0的情况,每次循环去掉⼀个汉字“零”if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') { $left = substr($c, 0, $j);$right = substr($c, $j + 3);$c = $left . $right;$j = $j-3;$slen = $slen-3;}$j = $j + 3;}//这个是为了去掉类似23.0中最后⼀个“零”字if (substr($c, strlen($c)-3, 3) == '零') {$c = substr($c, 0, strlen($c)-3);}//将处理的汉字加上“整”if (empty($c)) {return "零元整";}else{return $c . "整";}}echo num_to_rmb(23000000.00); //贰仟叁佰万元整代码三:<?php//先贴⼀个数字转中⽂的,最多12位数function convert_2_cn($num) {$convert_cn = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"); $repair_number = array('零仟零佰零拾零','万万','零仟','零佰','零拾'); $unit_cn = array("拾","佰","仟","万","亿");$exp_cn = array("","万","亿");$max_len = 12;$len = strlen($num);if($len > $max_len) {return 'outnumber';}$num = str_pad($num,12,'-',STR_PAD_LEFT);$exp_num = array();$k = 0;for($i=12;$i>0;$i--){if($i%4 == 0) {$k++;}$exp_num[$k][] = substr($num,$i-1,1);}$str = '';foreach($exp_num as $key=>$nums) {if(array_sum($nums)){$str = array_shift($exp_cn) . $str;}foreach($nums as $nk=>$nv) {if($nv == '-'){continue;}if($nk == 0) {$str = $convert_cn[$nv] . $str;} else {$str = $convert_cn[$nv].$unit_cn[$nk-1] . $str;}}}$str = str_replace($repair_number,array('万','亿','-'),$str);$str = preg_replace("/-{2,}/","",$str);$str = str_replace(array('零','-'),array('','零'),$str);return $str;}echo convert_2_cn(1111)."\n";echo convert_2_cn(111111)."\n";echo convert_2_cn(111111111111)."\n";$convert_cn = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");$skip_words = array("拾","佰","仟");$str = str_replace($skip_words,"",$str);$len = mb_strlen($str,'utf-8');$num = 0;$k = '';for($i=0;$i<$len;$i++) {$cn = mb_substr($str,$i,1,'utf-8');if($cn == '亿') {$num = $num + intval($k)*100000000;$k = '';} elseif($cn == '万') {$num = $num + intval($k)*10000;$k = '';} else {$k = $k . array_search($cn,$convert_cn);}}if($k) {$num = $num + intval($k);}return $num;}echo cn_2_num('壹仟壹佰壹拾壹亿壹仟壹佰壹拾壹万壹仟壹佰壹拾壹')."\n"; echo cn_2_num('拾壹万壹仟壹佰壹拾壹')."\n";>代码四:function convertCurrency(currencyDigits) {// Constants:var MAXIMUM_NUMBER = 99999999999.99;// Predefine the radix characters and currency symbols for output:var CN_ZERO = "零";var CN_ONE = "壹";var CN_TWO = "贰";var CN_THREE = "叁";var CN_FOUR = "肆";var CN_FIVE = "伍";var CN_SIX = "陆";var CN_SEVEN = "柒";var CN_EIGHT = "捌";var CN_NINE = "玖";var CN_TEN = "拾";var CN_HUNDRED = "佰";var CN_THOUSAND = "仟";var CN_TEN_THOUSAND = "万";var CN_HUNDRED_MILLION = "亿";var CN_SYMBOL = "⼈民币";var CN_DOLLAR = "元";var CN_TEN_CENT = "⾓";var CN_CENT = "分";var CN_INTEGER = "整";// Variables:var integral; // Represent integral part of digit number.var decimal; // Represent decimal part of digit number.var outputCharacters; // The output result.var parts;var digits, radices, bigRadices, decimals;var zeroCount;var i, p, d;var quotient, modulus;// Validate input string:currencyDigits = currencyDigits.toString();if (currencyDigits == "") {alert("Empty input!");return "";}if (currencyDigits.match(/[^,.\d]/) != null) {alert("Invalid characters in the input string!");return "";}if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {alert("Illegal format of digit number!");return "";// Normalize the format of input digits:currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters.currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning.// Assert the number is not greater than the maximum number.if (Number(currencyDigits) > MAXIMUM_NUMBER) {alert("Too large a number to convert!");return "";}// / Process the coversion from currency digits to characters:// Separate integral and decimal parts before processing coversion:parts = currencyDigits.split(".");if (parts.length > 1) {integral = parts[0];decimal = parts[1];// Cut down redundant decimal digits that are after the second.decimal = decimal.substr(0, 2);}else {integral = parts[0];decimal = "";}// Prepare the characters corresponding to the digits:digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT,CN_NINE); radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);decimals = new Array(CN_TEN_CENT, CN_CENT);// Start processing:outputCharacters = "";// Process integral part if it is larger than 0:if (Number(integral) > 0) {zeroCount = 0;for (i = 0; i < integral.length; i++) {p = integral.length - i - 1;d = integral.substr(i, 1);quotient = p / 4;modulus = p % 4;if (d == "0") {zeroCount++;}else {if (zeroCount > 0){outputCharacters += digits[0];}zeroCount = 0;outputCharacters += digits[Number(d)] + radices[modulus];}if (modulus == 0 && zeroCount < 4) {outputCharacters += bigRadices[quotient];}}outputCharacters += CN_DOLLAR;}// Process decimal part if there is:if (decimal != "") {for (i = 0; i < decimal.length; i++) {d = decimal.substr(i, 1);if (d != "0") {outputCharacters += digits[Number(d)] + decimals[i];}}}// Confirm and return the final output string:if (outputCharacters == "") {outputCharacters = CN_ZERO + CN_DOLLAR;}if (decimal == "") {outputCharacters += CN_INTEGER;}//outputCharacters = CN_SYMBOL + outputCharacters;outputCharacters = outputCharacters;return outputCharacters;}//var stmp = "";function nst_convert(t)if(t.value==stmp) return;//如果等于上次输⼊则返回var ms = t.value.replace(/[^\d\.]/g,"").replace(/(\.\d{2}).+$/,"$1").replace(/^0+([1-9])/,"$1").replace(/^0+$/,"0");//replace(/[^\d\.]/g,"")去掉输⼊当中不是数字和.的字符//replace(/(\.\d{2}).+$/,"$1")//匹配从字符开始的第⼀个.后⾯的所有字符,由于没有使⽤g标记,//所以只匹配开始第⼀次然后⽤⼩数点和后两位进⾏替换以确定数值最后的格式正确⾼.//replace(/^0+([1-9])/,"$1") 匹配以多个0开头的数值替换为去掉0后的数值做为数字的第⼀位也是匹配开始的⼀次. //replace(/^0+$/,"0") 匹配以0开始和结束的多个0为⼀个0 也就是0000000 输⼊->转换成⼀个0//以下确定输⼊的为过滤后的合法数字//alert(ms);var txt = ms.split(".");//alert(txt[0]);//如果ms值不⼩数点存在则txt[0]=⼩数点前的值否则等于ms//regexp:/\d{4}(,|$)/ 匹配四位数字和,的集合或者四位数字和字符结尾的集合while(/\d{4}(,|$)/.test(txt[0]))//如果为txt[0]=4123txt[0] = txt[0].replace(/(\d)(\d{3}(,|$))/,"$1,$2");//txt[0].replace(/(\d)(\d{3}(,|$))/,"$1,$2")是将txt[0]进⾏替换后再赋给它//regexp:/(\d)(\d{3}(,|$))/ 将四个数字份为两组第⼀个数字为第⼀位,后三位和其他结尾为每⼆位//并替换成第⼀位,第⼆位注意 ,的使⽤很好. 也就是将4123先替换成4,123//由于此表达式默认采⽤贪婪匹配所以从数值后向前匹配再通过循环进⾏再匹配替换从⽽可以将//12345678分成你想要的123,456,78 彩⽤(,|$)很精典,因为它略去了第⼆次匹配时的,问题t.value = stmp = txt[0]+(txt.length>1?"."+txt[1]:"");//最终赋值到输⼊框中//如果有⼩数点则加上并购成最终数字否则显⽰替换后的txt[0]bbb.value = convertCurrency(ms-0);//将ms转换为数字送到number2num1去转换}以上所述就是本⽂的全部内容了,希望⼤家能够喜欢。
银行小写金额转成大写金额的java方法

Java将数字金额转换成中文大写形式import java.math.BigDecimal;import java.math.RoundingMode;public class ChineseMoneyUtils {/*** 中文数字*/final static private String[] CHINESE_NUMBER = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };/*** 中文数字单位*/final static private String[] CHINESE_NUMBER_UNIT = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟" };/*** 人民币单位*/final static private String[] CHINESE_MONEY_UNIT = { "圆", "角", "分" };public static void main(String[] args) {String chineseMoney = toChineseMoney(new BigDecimal("320"));System.out.println("chineseMoney = " + chineseMoney);}/*** @param sourceMoney 要转换的数值,最多支持到亿* @return 结果*/public static String toChineseMoney(BigDecimal sourceMoney) {if (new BigDecimal("1000000000000").compareTo(sourceMoney) <= 0&& pareTo(sourceMoney) >= 0) {throw new RuntimeException("支持转换的金额范围为0~1万亿");}StringBuilder sb = new StringBuilder();// 整数部分BigDecimal intPart = sourceMoney.setScale(0, RoundingMode.DOWN);// 小数部分BigDecimal decimalPart = sourceMoney.subtract(intPart).multiply(newBigDecimal(100)).setScale(0,RoundingMode.DOWN);// 处理整数部分圆if (pareTo(BigDecimal.ZERO) > 0) {String intPartNumberString = intPart.toPlainString();int length = intPartNumberString.length();// 统计末尾的零,末尾零不做处理int zeroCount = 0;for (int i = length - 1; i >= 0; i--) {int number = Integer.parseInt(String.valueOf(intPartNumberString.charAt(i)));if (number == 0) {zeroCount++;} else {break;}}for (int i = 0; i < length; i++) {// 如果转换到末尾0,则停止转换if (i + zeroCount == length) {break;}int number = Integer.parseInt(String.valueOf(intPartNumberString.charAt(i)));// 获取中文数字String chineseNumber = CHINESE_NUMBER[number];// 获取中文数字单位String chineseNumberUnit = CHINESE_NUMBER_UNIT[length - i - 1];sb.append(chineseNumber).append(chineseNumberUnit);}// 统计完后加上金额单位sb.append(CHINESE_MONEY_UNIT[0]);} else {sb.append(CHINESE_NUMBER[0]).append(CHINESE_MONEY_UNIT[0]);}// 处理小数部分if (pareTo(new BigDecimal(10)) >= 0) {// 角String jiao = decimalPart.toPlainString();int number = Integer.parseInt(String.valueOf(jiao.charAt(0)));if (number != 0) {String chineseNumber = CHINESE_NUMBER[number];sb.append(chineseNumber).append(CHINESE_MONEY_UNIT[1]);}// 分String fen = decimalPart.toPlainString();number = Integer.parseInt(String.valueOf(fen.charAt(1)));if (number != 0) {String chineseNumber = CHINESE_NUMBER[number];sb.append(chineseNumber).append(CHINESE_MONEY_UNIT[2]);}} else if (pareTo(BigDecimal.ZERO) > 0) {// 分String fen = decimalPart.toPlainString();int number = Integer.parseInt(String.valueOf(fen.charAt(0)));if (number != 0) {String chineseNumber = CHINESE_NUMBER[number];sb.append(chineseNumber).append(CHINESE_MONEY_UNIT[2]);}} else {sb.append("整");}return sb.toString();}}。
Excel中将金额小写格式转换为大写格式的几种方法

P P=A s p 取金额 的绝对 值 b( ) p
En f d I
(8 ” “ I T( B (8- 3 1)、 =N ( B (8謇0 C 、 =N ( SC ) F ) 0” “I T( SC )1 - A A ITA SC )1) 1) , 合计金额 中表示 元 、 、 的 N ( B (8 0) 0”将 角 分 数值 取出 ; G 、 4 G 在 3G 、 5中依次 输入 公式 “T X (3” = E TF 。 【B U ] ” “ T X (4"D N M ] ” “ T X f5” D N M2” 、 = E TF ,[B U 2” 、 = E T , ) ) 【B U ] ”将元 、 、 D N M2” , ) 角 分转换为大写格式 。 () E 2 在 8单 元格 输入 公 式 “I (N (4 > .5 > =FA D F < 0F <
所示 。
1
2 项目 3 项 目1 4 项 目2 5 项 目3 6 项 目4 7 项 目5 8 合计 小写
收付凭证
金额 孺曼 46 5. -3.4 243 4.6 57 241 3.2 —2 10 323 8.3 大写I 百 艏 贰元叁角叁分 叁t挡
定义函数法 、 自定 义命令 按钮法 实现转换功 能。下面分
用此函数实现转换功能 。操作步骤如下 :
( ) E cl 口中选择 “ 1在 xe 窗 工具- 宏- Vsa B s + + i l ai u c
假设有一张凭 证如 图 1 所示 。 求在 E 单元格将 要 8
矗 B C D E
4 > ,5 0,3& ” < 0 -) F G 元”& G 4& ” 角整 ”FA DF = , (N (4 I
0 5 >) 3 & ” 元 ” & G & ” 分 ” 3 & ” , < 0, F G 5 , G 元 整” ), 元、 、 )”将 ) 角 分数 值的大写格式及在相应位置加 上 单位“ 、角” “ 或“ 连接成 为一个整体 . 图 1 元” “ 、 分” 整” 如
EXCEL中如何把金额自动转换成大写方法一至五

EXCEL中如何把金额自动转换成大写方法一至五EXCEL中如何把金额自动转换成大写方法一至五一、在EXCEL单元格中建立函数公式:(1)单元格准备:A列为金额,B列为金额大写(2)在B1单元格中按Fx,把鼠标移动到函数库里的数学函数,选择数值转换,点击公式输入,在A1输入框输入:=数值转换(A1,"大写")(3)按Enter,函数公式就构成,点击B1单元格,金额就转换成大写了二、利用EXCEL中的格式转换:(1)A列为金额,B列为金额大写(2)选中A列,双击A列的标题,出现“格式”对话框,在“数字”选项卡中,选择“文本”,确定(3)选中A列,以B1单元格为起点,单击鼠标右键,选择“复制”(4)将鼠标移至B1单元格,单击鼠标右键,选择“粘贴特性”,在“粘贴特性”对话框中,选择“文本转换”,确定(5)B列就转换成金额大写了三、EXCEL中的VBS脚本编程:(1)A列为金额,B列为金额大写Dim add(16)add(0)="零"add(1)="壹" add(2)="贰" add(3)="叁" add(4)="肆" add(5)="伍" add(6)="陆" add(7)="柒" add(8)="捌" add(9)="玖" add(10)="拾" add(11)="佰" add(12)="仟" add(13)="万" add(14)="亿"。
java数字转中文大写金额方法

标题:Java中的数字转中文大写金额方法目录:(可根据实际内容进行排版)1. 介绍2. 实现思路3. 代码示例4. 应用场景5. 总结1. 介绍在实际开发中,有时候我们需要将数字金额转换为中文大写金额,如将123456转换为“壹拾贰万叁仟肆佰伍拾陆元整”。
本文将介绍如何使用Java来实现数字转中文大写金额的方法。
2. 实现思路实现数字转中文大写金额的方法主要涉及数字的分段处理和中文数字的映射。
对于一个给定的数字,我们首先需要将其进行分段,然后对每个段进行中文数字的映射,最后将各个段拼接起来。
具体实现思路如下:- 将输入的数字按照万、千、百、十、个位进行分段处理。
如123456分成12、345、6三个段。
- 对于每个段,逐个数字进行中文数字的映射。
如123转为“壹佰贰拾叁”。
- 最终将各个段拼接起来,加上相应的“亿”、“万”、“元”等单位,得到最终的中文大写金额。
3. 代码示例下面是一个简单的Java代码示例,用于将数字金额转换为中文大写金额:```public class NumberToChinese {// 中文数字private static final String[] CHINESE_NUMBERS = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};// 中文金额单位private static final String[] CHINESE_UNIT = {"", "拾", "佰", "仟", "万", "亿"};// 中文金额段落private static final String[] CHINESE_SECTION = {"", "万", "亿"};public static String toChineseAmount(double amount) {// 将金额转换为字符串形式String amountStr = String.valueOf(amount);// 分割整数和小数部分String[] parts = amountStr.split("\\.");int integerPart = Integer.parseInt(parts[0]);int decimalPart = Integer.parseInt(parts[1]);// 转换整数部分String integerChinese = toChineseInteger(integerPart); // 转换小数部分String decimalChinese = toChineseDecimal(decimalPart); return integerChinese + "元" + decimalChinese;}private static String toChineseInteger(int number) {StringBuilder sb = new StringBuilder();int section = 0;// 处理每个数字段while (number > 0) {int num = number 10000;if (num != 0) {sb.insert(0, CHINESE_SECTION[section]);StringBuilder sectionStr = new StringBuilder();// 处理每个数字段内的数字for (int i = 0; i < 4; i++) {int digit = num 10;if (digit != 0) {sectionStr.insert(0, CHINESE_NUMBERS[digit] +CHINESE_UNIT[i]);} else {if (sectionStr.length() > 0 sectionStr.charAt(0) != '零') {sectionStr.insert(0, "零");}}num /= 10;}sb.insert(0, sectionStr);} else {if (sb.length() > 0 sb.charAt(0) != '零') {sb.insert(0, "零");}}number /= 10000;section++;}if (sb.length() == 0) {sb.append("零");}return sb.toString();}private static String toChineseDecimal(int number) {StringBuilder sb = new StringBuilder();if (number == 0) {sb.append("整");} else {int digit1 = number / 10;int digit2 = number 10;if (digit1 != 0) {sb.append(CHINESE_NUMBERS[digit1] + "角");}if (digit2 != 0) {sb.append(CHINESE_NUMBERS[digit2] + "分");}}return sb.toString();}}```4. 应用场景数字转中文大写金额的方法通常用于财务软件、发票打印等场景中。
运用ExcelVBA将人民币金额小写格式转换成大写格式

运用ExcelVBA将人民币金额小写格式转换成大写格式陈国栋
【期刊名称】《财会月刊(综合版)》
【年(卷),期】2012(000)010
【摘要】本文通过Excel VBA自定义函数,实现了将人民币金额小写格式转换成大写格式的功能,可方便广大财会人员使用这个自定义函数来提高工作效率。
【总页数】2页(P95-96)
【作者】陈国栋
【作者单位】华北水利水电学院管理与经济学院,郑州450046
【正文语种】中文
【中图分类】F822.2
【相关文献】
1.Excel中将金额小写格式转换为大写格式的几种方法 [J], 张敏
2.在PowerBuilder中实现小写金额转换成大写金额 [J], 曹滨
3.实现小写金额转换成大写金额的简洁程序 [J], 戴广全
4.实现小写金额转换成大写金属的简洁程序 [J], 戴广全
5.如何在VFP下将小写金额转换成大写金额 [J], 刘作斌
因版权原因,仅展示原文概要,查看原文内容请购买。
Excel表中小写金额直接转换成大写金额的公式
Excel表中小写金额直接转换成大写金额的公式:一、=IF(OR(A1<0,A1=""),"",IF(VALUE(LEFT(A1,1))=0,"",NUMBERSTRIN G(INT(A1),2)&"元")&IF(ISERROR(FIND(".",A1)),"整",IF(VALUE(MID(A1,FIND(".",A1)+1,1))=0,"零",IF(ISERROR(FIND(".",A1)),"",NUMBERSTRING(MID(A1,FIND(".", A1)+1,1),2)&"角")))&IF(ISERROR(FIND(".",A1)),"",IF(LEN(ROUND(A1,2))=(FIND( ".",A1)+2),NUMBERSTRING(MID(ROUND(A1,2),FIND(".",A1)+2,1),2 )&"分","")))&IF(ISERROR(FIND(".",A1)),"","")二、假定你要在B1输入阿拉佰数字,C1转换成中文大写金额(含元角分),请在C1单元格输入如下公式:=SUBSTITUTE(SUBSTITUTE(IF(-RMB(B1),IF(B1>0,,"负")&TEXT(INT(ABS(B1)+0.5%),"[dbnum2]G/通用格式元;;")&TEXT(RIGHT(RMB(B1,2),2),"[dbnum2]0角0分;;整"),),"零角",IF(B1^2<1,,"零")),"零分","整")三、用公式就可以,我不懂做会计的如何用大写表示如128.40这样的角不为0但分为0的值,是“壹佰贰拾捌元肆角整”还是“壹佰贰拾捌元肆角”?如果是“壹佰贰拾捌元肆角”,请用这个公式:=TEXT(INT(B2),"[DBNUM2]")&"元"&IF(INT(B2)=B2,"整",(IF(INT(B2*10)-INT(B2)*10>0,TEXT(INT(B2*10)-INT(B2)*10,"[ DBNUM2]")&"角","零")&IF(B2*100-INT(B2*10)*10>0,TEXT(B2*100-INT(B2*10)*10,"[db num2]")&"分","")))如果是“壹佰贰拾捌元肆角整”,请用这个公式:=TEXT(INT(B2),"[DBNUM2]")&"元"&(IF(INT(B2*10)-INT(B2)*10>0,TEXT(INT(B2*10)-INT(B2)*10,"[ DBNUM2]")&"角",IF(B2*100-INT(B2*10)*10>0,"零",""))&IF(B2*100-INT(B2*10)*10>0,TEXT(B2*100-INT(B2*10)*10, "[dbnum2]")&"分","整"))说明:1、将以上公式中的B2换成你要换算的值或对应的单元格。
Vb6将数字钱数转换为大写
Vb6界面 代码部分:
Constss = "壹、贰、叁、肆、伍、陆、柒、捌、玖、零" Constssl = "仟、佰、拾、万、仟、佰、拾、亿、仟、佰、拾、万、仟、佰、拾、元" Private Sub Command1_Click() If Text1.Text = "" Then Text2.Text = "" On Error GoToveno Dim op As String op = Trim(Text1.Text)
Dim ols As String ols = Right(ssl, 2 * Len(op) - 1) Dim ools As String For i = 0 To Len(op) - 1 ools = ools& change(Mid(op, i + 1, 1))
Next i ' Print Len(op) Dim qs As String If Len(op) = 1 Then qs = ools&ols Else
For s = 0 To Len(op) - 1 qs = qs& Mid(ools, s + 1, 1) & Split(ols, "、")(s) Next s End If On Error Resume Next
qs = Replace(qs, "零亿", "") qs = Replace(qs, "零万", "") qs = Replace(qs, "零仟", "") qs = Replace(qs, "零佰", "") qs = Replace(qs, "零拾", "") qs = Replace(qs, "零元", "") Text2.Text = qs veno: Exit Sub End Sub Private Function change(ByVal x As String) As String Select Case x Case "1" change = Split(ss, "、")(0) Case "2" change = Split(ss, "、")(1) Case "3" change = Split(ss, "、")(2) Case "4" change = Split(ss, "、")(3) Case "5" change = Split(ss, "、")(4) Case "6" change = Split(ss, "、")(5) Case "7" change = Split(ss, "、")(6) Case "8" change = Split(ss, "、")(7) Case "9" change = Split(ss, "、")(8) Case "0" change = Split(ss, "、")(9)
EXCEL金额大小写转换公式大全
EXCEL金额大小写转换公式大全在Excel中,我们可以使用宏或函数来实现金额大小写转换。
下面是一些常用的方法和公式:1.宏:可根据需要编写一个VBA宏来实现金额大小写转换。
以下是一个示例宏代码:```vbaOption ExplicitFunction ConvertNumberToWords(ByVal MyNumber)Dim DecimalPlace, CountReDim Place(9) As StringPlace(2) = " Thousand "Place(3) = " Million "Place(4) = " Billion "Place(5) = " Trillion "MyNumber = Trim(CStr(MyNumber))MyNumber = Replace(MyNumber, ",", "")DecimalPlace = InStr(MyNumber, ".")Count = 1Do While DecimalPlace <> 0If Count = 1 ThenMyNumber = Left(MyNumber, DecimalPlace - 1) &GetTens(Mid(MyNumber, DecimalPlace + 1) & "00")End IfIf Count = 2 Then MyNumber = Left(MyNumber, DecimalPlace - 1) & GetTens(Mid(MyNumber, DecimalPlace + 1) & "00") & " Cents"DecimalPlace = 0Count = Count + 1LoopSelect Case CountCase 1MyNumber = MyNumber & " Only"Case 2MyNumber = MyNumberEnd SelectConvertNumberToWords = Trim(MyNumber)End FunctionFunction GetDigit(ByVal Digit)Select Case Val(Digit)Case 1: GetDigit = "One"Case 2: GetDigit = "Two"Case 3: GetDigit = "Three"Case 4: GetDigit = "Four"Case 5: GetDigit = "Five"Case 6: GetDigit = "Six"Case 7: GetDigit = "Seven"Case 8: GetDigit = "Eight"Case 9: GetDigit = "Nine"Case Else: GetDigit = ""End SelectEnd FunctionFunction GetTens(TensText)Dim Quantity As StringQuantity = ""If Val(Left(TensText, 1)) = 1 Then Select Case Val(TensText)Case 10: Quantity = "Ten"Case 11: Quantity = "Eleven"Case 13: Quantity = "Thirteen" Case 14: Quantity = "Fourteen" Case 15: Quantity = "Fifteen" Case 16: Quantity = "Sixteen" Case 17: Quantity = "Seventeen" Case 18: Quantity = "Eighteen" Case 19: Quantity = "Nineteen" Case ElseEnd SelectElseSelect Case Val(Left(TensText, 1)) Case 2: Quantity = "Twenty "Case 3: Quantity = "Thirty "Case 4: Quantity = "Forty "Case 5: Quantity = "Fifty "Case 6: Quantity = "Sixty "Case 7: Quantity = "Seventy " Case 8: Quantity = "Eighty "Case ElseEnd SelectQuantity = Quantity & GetDigit(Right(TensText, 1))End IfGetTens = QuantityEnd Function```在“开发工具”选项卡下的宏对话框中,输入上述代码,并保存。
将表示金额的阿拉伯数字转换成中文大写形式
将表示金额的阿拉伯数字转换成中文大写形式对于用EXCEL来处理日常统计报表的财务人员来说,一个最令人头痛的问题,就是如何将表示金额的阿拉伯数字转换成中文大写形式。
这里给出将阿拉伯金额数字转换成中文大写形式的两种方法:内置函数法、自定义函数法,供大家参考。
本文所涉及到的Excel函数如下,点击可查阅具体的函数用法。
1、ABS(number)2、CONCATENATE(Text1,Text……)3、INT(number)4、TEXT(value,format_text)5、自定义函数一、内置函数法如图1所示,我们来将C12单元格中的数值转换为中文大写形式,并将结果保存在D12单元格中。
1、分别选中E13、F13、G13单元格,依次输入公式:=TEXT(INT(ABS(C12)),"[DBNum2]")=TEXT(INT(ABS(C12*10))-INT(ABS(C12))*10,"[DBNum2]")=TEXT(INT(ABS(C12*100))-INT(ABS(C12*10))*10,"[DBNum2]")公式含义解析:分别确定统计结果的元、角、分的数值,并将其转换为中文大写格式。
2、选中E10单元格,输入公式:=E13&"元"&F13&"角"&G13&"分",或者:=CONCATENATE(E13,"元",F13,"角",G13,"分")。
公式含义解析:将E13至G13单元格中的文本组合为一个整体,并在相应位置加上单位“元、角、分”文字。
3、再次选中E12单元格,执行“格式→条件格式”命令,打开“条件格式”对话框(如图2)。
按“条件1”下面的下拉按钮,选中“公式”选项,在后面的方框中输入“=$C$12<0”(如图2),再按“格式”按钮,在随后弹出的“单元格格式”对话框中(如图3),将“字体”颜色设置为红色,确定退出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PowerBuilder中小写金额转换成大写金额
在很多如打印发票的地方需要打印金额的中文大写,PowerBuilder没有提供这样一个数字转换成金额大写的函数。
我就自己编了一个,在实际使用中效果良好。
程序源代码如下:
int i,lendec,lenint
string numstr,a,b,c,d,bbak
numstr=string(aje,"#0.00")
lenint=len(mid(numstr,1,pos(numstr,'.') - 1))
if right(numstr,2)='00' then
lendec=0
else
lendec=2
end if
string dxint[13],dxdec[2],sz[13]
string dxstr="万仟佰拾亿仟佰拾万仟佰拾元"
string szstr="零壹贰叁肆伍陆柒捌玖"
for i=1 to 13
dxint[i]=mid(dxstr,26 - i*2+1,2)
if i<11 then
sz[i]=mid(szstr,i*2 - 1,2)
else
sz[i]=" "
end if
next
dxdec[1]="角"
dxdec[2]="分"
dxstr=" "
for i = 1 to lenint
a = mid(mid(numstr,1,lenint),i,1)
b = sz[integer(a)+1]
c = dxint[lenint - i +1]
if dxstr<>" " then
d = mid(dxstr,len(dxstr) - 1 ,2)
else
d = " "
end if
if b="零" and (d="零" or b=bbak or c="元" or c="万" or c="亿") then b=
""
if a="0" and c<>"元" and c<>"万" and c<>"亿" then c=""
if (c="元" or c="万" or c="亿") and d="零" and a="0" then
dxstr=mid(dxstr,1,len(dxstr) - 2)
d = mid(dxstr,len(dxstr) - 1,2)
if (c="元" and d="万" or c="万"and d="亿") then c="" end if
dxstr=dxstr + b + c
bbak = b
next
for i=1 to lendec
a = mid (mid(numstr,lenint+2,lendec),i,1)
if a="0" and dxdec[i]="分" then
b=""
else
b=sz[integer(a) + 1]
end if
if a<>"0" then
dxstr=dxstr+b+dxdec[i]
else
dxstr=dxstr+b
end if
next
if lendec=0 then dxstr=dxstr+"整"
return dxstr。