首页
/
每日頭條
/
職場
/
excel金額小寫轉大寫公式詳解
excel金額小寫轉大寫公式詳解
更新时间:2025-07-16 01:04:25

對于做财務的同學應該經常會遇到要求把金額用大寫的方式展示吧,如下圖這樣。

excel金額小寫轉大寫公式詳解(Excel中金額小寫轉大寫)1

今天小編就和大家分享如何把數字金額轉換為大寫金額。

1、單元格格式

Excel本身自帶了中文大寫數字格式,但是實際使用不僅容易,下面我們一起來看看吧。

不知道大家還記不記得在單元格格式中數字類别類别下有個特殊格式,這個格式下就有中文大寫數字格式。

excel金額小寫轉大寫公式詳解(Excel中金額小寫轉大寫)2

我們直接用開頭的數據來試試,看看效果,也好做個對比。

excel金額小寫轉大寫公式詳解(Excel中金額小寫轉大寫)3

看到結果應該知道小編為什麼說不盡如意了吧。這種方式有幾個問題:①沒有元角分單位;②有小數點;③沒有包含整字。

2、NUMBERSTRING函數

NUMBERSTRING函數是Excel中的一個隐藏函數,就是在函數列表裡查不到的,我們也就不去研究Excel出于什麼原因沒有公開這個函數了。

函數格式:「=NUMBERSTRING(VALUE,TYPE)」;

函數作用;處理小寫數字轉大寫數字;

說明:VALUE表示要轉換的數字;TYPE有三種類型可選為「1、2、3」,每種類型對應一種展示大寫方式。

注意點:這個函數隻支持正整數,不支持小數。

我們來看看三種類型的效果對比:

excel金額小寫轉大寫公式詳解(Excel中金額小寫轉大寫)4

從結果上來看類型參數為2的是我們需要的,并且我們發現也是沒有單位沒有整字的,而且函數不能處理小數。我們可以看下效果:

excel金額小寫轉大寫公式詳解(Excel中金額小寫轉大寫)5

而且我們還發現如果直接使用小數,結果會被四舍五入。

不過這些都不是問題,因為是函數所有操作空間就很多,我們可以進行加工得到我們想要的。

我們先來解決四舍五入的問題。今天我們來學習一個新函數TRUNC。這個函數很簡單,主要作用是把數字的小數部分截掉,保留整數部分,語法:TRUNC(數字)。

然後我們來解決小數部分。既然NUMBERSTRING函數隻能處理整數,那麼如果我們把小數部分轉為整數不就行了嗎?而且我們隻需要處理角和分也就是兩個字。

小編第一個想到的是截取函數,然後定位到角分,方案是可以的,就是公式寫出來很長很繁瑣。

如下圖,如一個兩位小數,我們首先把這個兩位小數乘以10,然後對結果截取整數部分得到金額1,那麼十分位就變成個位了;然後對這個兩位小數直接截取整數部分再乘以10得到金額2,并且金額2的個位一定是0,而且金額1和金額2位數也一定相等,隻要把金額1減金額2就可得到角了。

excel金額小寫轉大寫公式詳解(Excel中金額小寫轉大寫)6

同理「=TRUNC(A5*100)-TRUNC(A5*10)*10」可得分。

現在四舍五入,角,分問題都解決了,我們把公式拼接一下就可以了。最終得到公式:「=NUMBERSTRING(TRUNC(B5),2)&"元"&NUMBERSTRING(TRUNC(B5*10)-TRUNC(B5)*10,2)&"角"&NUMBERSTRING(TRUNC(B5*100)-TRUNC(B5*10)*10,2)&"分"」,我們看看效果:

excel金額小寫轉大寫公式詳解(Excel中金額小寫轉大寫)7

看到結果還是不是很理想,還是有很多問題,整數結尾應該是"元整",角為有值分位沒值的結尾應該是"角整",分位有值的且角位為0的應該是"零玖分"這樣,後面不應該有"零分"。當然這些問題也可通過IF函數在處理,但是這就會導緻公式很長。

小編發現主要問題就是在小數部分的處理上,因此我們可以選擇把小數部分複雜的處理交給VBA處理,代碼如下:

'獲取小數部分大寫金額 Function GetDecimal(cell) Dim arrResult() As String '截取小數點 arrResult = VBA.Split(cell, ".") Dim iArr As Integer iArr = UBound(arrResult) '沒有小數部分直接返回"元整" If iArr = 0 Then GetDecimal = GetDecimal & "元整" '有小數部分且是格式正确 ElseIf iArr = 1 Then Dim strSmall As String strSmall = arrResult(1) Dim iSmall As Integer Dim strJiao, strFen As String '獲取小數位數 iSmall = Len(strSmall) '一位小數則為分 If iSmall = 1 Then strJiao = getUpperCase(strSmall) '兩位小數則為分角 ElseIf iSmall = 2 Then strJiao = getUpperCase(Left(strSmall, 1)) strFen = getUpperCase(Right(strSmall, 1)) '大于兩位小數隻取前兩位分角 Else strJiao = getUpperCase(Left(strSmall, 1)) strFen = getUpperCase(Mid(strSmall, 2, 1)) End If '如 1.00 為 壹元整 If (strFen = "" Or strFen = "零") And strJiao = "零" Then GetDecimal = GetDecimal & "元整" '如 1.10 為 壹元壹角整 ElseIf (strFen = "" Or strFen = "零") And strJiao <> "零" Then GetDecimal = GetDecimal & "元" & strJiao & "角整" '如 1.01 為 壹元零壹分 ElseIf strFen <> "" And strFen <> "零" And strJiao = "零" Then GetDecimal = GetDecimal & "元" & "零" & strFen & "分" '如 1.11 為 壹元壹角壹分 ElseIf strFen <> "" And strFen <> "零" And strJiao <> "零" Then GetDecimal = GetDecimal & "元" & strJiao & "角" & strFen & "分" End If '有小數部分但是格式不正确 Else GetDecimal = GetDecimal & "數據格式有問題" End If End Function '數字轉大寫 Private Function getUpperCase(str) As String Dim strWord As String Select Case str Case "0": strWord = "零" Case "1": strWord = "壹" Case "2": strWord = "貳" Case "3": strWord = "叁" Case "4": strWord = "肆" Case "5": strWord = "伍" Case "6": strWord = "陸" Case "7": strWord = "柒" Case "8": strWord = "捌" Case "9": strWord = "玖" Case Else: strWord = str End Select getUpperCase = strWord End Function

代碼中也有解釋,小編注解應該還算清楚,不清楚的可以和小編一起探讨。

最後把整數部分和小數部分結合起來,使用公式:「=NUMBERSTRING(TRUNC(B5),2)&GetDecimal(B5)」即可得到最終效果。

excel金額小寫轉大寫公式詳解(Excel中金額小寫轉大寫)8

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
家裡有事不想讓領導随禮怎麼說
家裡有事不想讓領導随禮怎麼說
山雨欲來風滿樓。小林聽說下個月單位要動一批幹部,心裡如同百抓撓心,打聽到領導張主任的家庭住址,用紅包裝了3000元現金,在路上買了一籃水果,直奔張主任的家。張主任打開門,先是一愣,然後上下打量小林一眼。小林趁機進門,張主任請小林坐下。小林誠...
2025-07-16
職場同事相處五大禁忌中招幾個
職場同事相處五大禁忌中招幾個
職場,我們經常聽到一句:這是我掏心窩子的話!其實,越是這樣說,要麼是傻子,要麼是僞君子。其實,所有成熟的人都知道,職場最忌諱“交心”。雖然忌諱交心,但職場人也得練就火眼金睛,去辨“心”。按照“心眼兒”分類,職場人可以劃分為四大類:第一:心眼...
2025-07-16
一款遊戲是否能夠持續運營下去,必然是需要不斷的注入新的内容,比如最近《完美世界》手遊的新版本,就加入了一個全新的職業——妖刃,本以為也隻是一個傳統的刺客,但沒想到,我卻被她的曲線,不對,被她的技能操作給吸引了,這個職業看起來像是一個刺客,但...
2025-07-16
怎麼回複别人說凡爾賽
怎麼回複别人說凡爾賽
出品|虎嗅年輕組作者|渣渣郡題圖來自pinterest本文首發于虎嗅年輕内容公衆号“難逃一吸”(ID:huxiu4youth)。在這裡,我們呈現當下年輕人的面貌、故事和态度。最近,在我身邊和辦公室裡,大家都特别流行說一詞:凡爾賽。比如我買了...
2025-07-16
你以為的産品經理
你以為的産品經理
現在産品經理職位很火,但是大家對産品經理這個職位究竟知道多少呢?什麼是産品經理,産品經理需要做什麼?來看看作者的觀點吧!什麼是産品經理?做了七八年的産品設計,也經過了大家對産品經理這個職位的疑惑,以至于到現在還在争論,産品經理的簡稱是PM還...
2025-07-16
Copyright 2023-2025 - www.tftnews.com All Rights Reserved