回覆列表
  • 1 # 使用者5279754039313

    利用一個隱秘函式NUMBERSTRING稍加改造可以實現,這個函式連公式選項卡、幫助檔案、公式記憶式鍵入裡都沒有。

    格式為:NUMBERSTRING(單元格,引數),引數只有1或者2或者3

    第一個引數為物件,第二個引數為中文格式,總共只有3種格式,可將數字轉換為大寫:

    這裡我們需要第二種,即NUMBERSTRING(單元格,2),在單元格內輸入以下公式:

    =IF(ISERROR(FIND(".",ROUND(單元格,2)))=TRUE,NUMBERSTRING(單元格,2)&"元",IF(LEN(MID(ROUND(單元格,2),FIND(".",ROUND(單元格,2))+1,LEN(ROUND(單元格,2))))=2,NUMBERSTRING(LEFT(ROUND(單元格,2),FIND(".",ROUND(單元格,2))-1),2)&"元"&NUMBERSTRING(MID(ROUND(單元格,2),FIND(".",ROUND(單元格,2))+1,1),2)&"角"&NUMBERSTRING(MID(ROUND(單元格,2),FIND(".",ROUND(單元格,2))+2,1),2)&"分",NUMBERSTRING(LEFT(ROUND(單元格,2),FIND(".",ROUND(單元格,2))-1),2)&"元"&NUMBERSTRING(MID(ROUND(單元格,2),FIND(".",ROUND(單元格,2))+1,1),2)&"角"))

    可實現以下效果:

    這個公式看起來很複雜,主要因為保留1位小數還是2位小數的問題,邏輯上其實可分為以下3塊:

    具體解釋:因為正常情況下,金融數字只統計到分,所以我們先用ROUND(單元格,2)保留小數點後2位做四捨五入,然後:

    當四捨五入後保留小數後2位後,物件仍是正整數的時候,我用了ISERROR(FIND(".",ROUND(單元格,2)))=TRUE來判斷是否為正整數(該公式不支援負數,如果需要負數轉換,就再巢狀兩層IF就可以),是整數直接用NUMBERSTRING將物件轉換為大寫數字,後面用“&”符號連線一個“元”字;當四捨五入後保留小數後2位後,小數點後面正好是2位,就需要用到FIND函式分別去定位“.”小數點的位置,然後用LEFT函式取小數點左邊的數字用NUMBERSTRING轉換為大寫,連線一個“元”,再用MID函式分別取小數點右邊的第一和第二位數字,分別連線“角”和“分”;而當四捨五入後保留小數後2位後,小數點後面正好是1位(這是最後一種情況,什麼意思呢?因為EXCEL裡面使用ROUND函式取小數點後面的固定位數,如果四捨五入為0了,就不顯示了,例如:ROUND(32.199,2),結果顯示為32.2,而不是32.20,所以我們才用IF公式去判斷小數點後面的是1位還是2位),這種情況下同2,不取“分”即可。

    可以將這個公式複製在文件筆記裡,需要的時候直接食用:

    =IF(ISERROR(FIND(".",ROUND(單元格,2)))=TRUE,NUMBERSTRING(單元格,2)&"元",IF(LEN(MID(ROUND(單元格,2),FIND(".",ROUND(單元格,2))+1,LEN(ROUND(單元格,2))))=2,NUMBERSTRING(LEFT(ROUND(單元格,2),FIND(".",ROUND(單元格,2))-1),2)&"元"&NUMBERSTRING(MID(ROUND(單元格,2),FIND(".",ROUND(單元格,2))+1,1),2)&"角"&NUMBERSTRING(MID(ROUND(單元格,2),FIND(".",ROUND(單元格,2))+2,1),2)&"分",NUMBERSTRING(LEFT(ROUND(單元格,2),FIND(".",ROUND(單元格,2))-1),2)&"元"&NUMBERSTRING(MID(ROUND(單元格,2),FIND(".",ROUND(單元格,2))+1,1),2)&"角"))

  • 中秋節和大豐收的關聯?
  • 前列腺癌患者的術後飲食要注意些什麼?