在制作金融报表,报销单的时候,经常需要将数字转化为大写的文字,有时还需要逐位拆开,制成形如下图的报表:
润乾报表给出的相关解决方案如下:
首先为用户提供三种小数转换规则:直接舍弃、直接进位、四舍五入,分别用参数-1,1,和0来表示
然后构造参数用以保留小数位数,范围为[0,4]超出范围则按临近顺序选取0或4。设置好参数,写入默认值
如下图制表:
B1格中有一部分冗余校验,isnumber函数判定数据是否是数字,参数@number已经设定格式为数值,润乾会自动校验其格式,B1中的方法可用于从数据库中提取数据做校验。
其中B8单元格的完整内容是=if(B7>13,"万,千,百,十,","") + if(B7>9,"万,千,百,十,","") + "亿,千,百,十,万,千,百,十,元" + if(B2==1,",.,角","") + if(B2==2,",.,角,分","") + if(B2==3,",.,角,分,厘","") + if(B2==4,",.,角,分,厘,毫","")
B8中的逗号作为B11中的识别符。
B14和B15用来标示“¥”的位置。
函数填写好后,需要设置B11单元格为横向扩展,然后将B10\B14\B15的上主格设置为B11,其余格的上主格要设为'0,即初始格,不扩展。
B3单元格的显示格式设定为if(B2==0,"#0",B2==1,"#0.0",B2==2,"#0.00",B2==3,"#0.000",B2==4,"#0.0000")
B11的隐藏列属性中写入表达式:if(value()==".",true)
B17的显示值属性写入表达式:if(B14 >= 0, mid(value(),B14,B15), B14 == -1,"¥","")
第1行至第15行设置成隐藏行,不显示
B18的显示值要利用润乾报表自带的转换函数,rmb(value())。
调整好B列的宽度之后,程序执行如下:
该方法主要用于将数字拆分,如果单纯需要最下面的大写数字,可以利用B1格中的校验函数以及润乾的rmb()函数,可以大批量地自动转换大写数字。