在製作金融報表,報銷單的時候,經常需要將數字轉化爲大寫的文字,有時還需要逐位拆開,製成形如下圖的報表:
潤乾報表給出的相關解決方案如下:
首先爲用戶提供三種小數轉換規則:直接捨棄、直接進位、四捨五入,分別用參數-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()函數,可以大批量地自動轉換大寫數字。