反饋已提交
網絡繁忙
Cnmoney函式 在將數字轉換為人民幣大寫時,小數部分只能精確到分,使用者希望能夠將小數部分精確到釐、毫。
在票據、落款類報表中,想要直接展示金額、數位的中文大寫形式,而非人民幣形式。
1.2 解決思路
方案一:
若您使用的設計器是 11.0.4 以及之後的版本,可以使用 NUMTO
注:NUMTO() 函式不支援小數。
方案二:
1)整數部分可直接透過 Cnmoney 函式進行轉換
2)小數部分組合運用 MAPARRAY、REPLACE 等函式進行更換
3)最後進行連接即可
12 的傳回值:壹拾貳
1234.1234 的傳回值:壹仟貳佰叄拾肆點壹貳叄肆
1)Cnmoney 函式精度範圍內的數字直接透過該函式進行轉換
2)精度外的數字透過 SWITCH、INDEXOF等函式按位取出,單獨進行轉換
12 的傳回值:壹拾貳圓整
1234.1234 的傳回值:壹仟貳佰叄拾肆圓壹角貳分叄釐肆毫
1)建立一張普通報表,右擊任意儲存格(例如A1儲存格),輸入數值1234.123,如下圖所示:
2)選中 B1 儲存格,輸入公式:IF(FIND(".",A1)>0,CONCATENATE(REPLACE(CNMONEY(LEFT(A1, FIND(".", A1) - 1)), "圓整", ""), "點", REPLACE(MAPARRAY(split(mid(A1, FIND(".", A1) 1, 100), ""), SWITCH(item, '0', "零", '1', "壹", '2', "貳", "3", "叄", '4', "肆", "5", "伍", "6", "陸", '7', "柒", '8', "捌", '9', "玖")), ",", "")),REPLACE(CNMONEY(A1),"圓整",""))
,如下圖所示:
公式說明:
若存在小數,小數點左邊部分透過函式 CNMONEY() 直接轉換為中文
儲存範本,選擇分頁預覽,如下圖所示:
已完成範本,可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\function\數字轉換成中文大寫.cpt。
點選下載範本:數字轉換為中文大寫.cpt
1)建立一張普通報表,選中任意儲存格(例如 A1 儲存格),輸入數值17.3456,如下圖所示:
2)選中 B1 儲存格,輸入公式:SWITCH(LEN(MID(A1,FIND(".",A1) 1,100)),0,CNMONEY(A1),1,CNMONEY(A1),2,CNMONEY(A1),3,CONCATENATE(CNMONEY(left(A1,LEN(A1)-1)),SWITCH(INDEXOF(A1,FIND(".",A1) 2),'0',"零",'1',"壹",'2',"貳","3","叄",'4',"肆","5","伍","6","陸",'7',"柒",'8',"捌",'9',"玖") "釐"),4,CONCATENATE(CNMONEY(left(A1,LEN(A1)-2)),,SWITCH(INDEXOF(A1,FIND(".",A1) 2),'0',"零",'1',"壹",'2',"貳","3","叄",'4',"肆","5","伍","6","陸",'7',"柒",'8',"捌",'9',"玖") "釐" SWITCH(INDEXOF(A1,FIND(".",A1) 3),'0',"零",'1',"壹",'2',"貳","3","叄",'4',"肆","5","伍","6","陸",'7',"柒",'8',"捌",'9',"玖") "毫"))
公式說明如下:
注:在使用 Cnmoney函式 時,若小數位超過兩位(精度超過分),Cnmoney 函式會對數字四捨五入後再轉人名幣大寫。
判斷小數部分的位數(精度)
CNMONEY(left(A1,LEN(A1)-1))
為防止 Cnmoney 函式四捨五入,僅取出精度範圍內的部分進行轉換
精度外的部分透過 Switch 函式進行轉換:
先透過 INDEXOF 函式取出小數點後第三位(釐)上的數字
透過 SWITCH 函式將數字轉大寫,並加上單位「釐」
透過 CONCATENATE 函式將以上兩步轉換後的內容連接在一起
同理可將小數第四位(釐)上的數字轉換為人民幣大寫
SWITCH(LEN(MID(A1,FIND(".",A1) 1,100)),
0,CNMONEY(A1),
1,CNMONEY(A1),
2,CNMONEY(A1),
3,CONCATENATE(CNMONEY(left(A1,LEN(A1)-1)),SWITCH(INDEXOF(A1,FIND(".",A1) 2),'0',"零",'1',"壹",'2',"貳","3","叄",'4',"肆","5","伍","6","陸",'7',"柒",'8',"捌",'9',"玖") "釐"),
4,CONCATENATE(CNMONEY(left(A1,LEN(A1)-2)),,SWITCH(INDEXOF(A1,FIND(".",A1) 2),'0',"零",'1',"壹",'2',"貳","3","叄",'4',"肆","5","伍","6","陸",'7',"柒",'8',"捌",'9',"玖") "釐" SWITCH(INDEXOF(A1,FIND(".",A1) 3),'0',"零",'1',"壹",'2',"貳","3","叄",'4',"肆","5","伍","6","陸",'7',"柒",'8',"捌",'9',"玖") "毫"))
透過 SWITCH 函式,根據小數部分的位數選擇對應的轉換方式:
位數為 0~2(即精度最大到分)時,直接透過 CNMONEY 函式轉換
位數為 3(釐),需分別對分位、釐位進行轉換後,再進行連接
位數為 4(毫),需分別對分位、釐位、毫位進行轉換後,再進行連接
點選下載已完成範本:數字轉換為人民幣大寫(精確到毫).cpt
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙