Đổi số thành chữ trong Excel
Sao chép code VBA hàm DocSo dán vào Excel để đọc số tiền thành chữ ngay trong bảng tính, kèm ô thử kết quả trực tiếp.
Kết quả
Mười lăm triệu bảy trăm năm mươi nghìn đồng chẵn
Code VBA hàm DocSo
Module1 - VBA
Function DocSo(ByVal SoTien As Double, Optional ByVal DonVi As String = "dong") As String
Dim ChuSo As Variant, Hang As Variant
Dim i As Long, j As Long, Nhom As Long
Dim S As String, KetQua As String, Temp As String
Dim Tram As Long, Chuc As Long, DonViSo As Long
Dim Am As Boolean
ChuSo = Array("khong", "mot", "hai", "ba", "bon", "nam", "sau", "bay", "tam", "chin")
Hang = Array("", " nghin", " trieu", " ty")
If SoTien < 0 Then Am = True: SoTien = -SoTien
SoTien = Int(SoTien)
If SoTien = 0 Then
DocSo = "Khong " & DonVi & " chan"
Exit Function
End If
S = Format(SoTien, "0")
Do While Len(S) Mod 9 <> 0 And Len(S) Mod 3 <> 0
S = "0" & S
Loop
Do While Len(S) Mod 3 <> 0
S = "0" & S
Loop
Nhom = Len(S) / 3
For i = 1 To Nhom
Temp = Mid(S, (i - 1) * 3 + 1, 3)
Tram = CLng(Mid(Temp, 1, 1))
Chuc = CLng(Mid(Temp, 2, 1))
DonViSo = CLng(Mid(Temp, 3, 1))
If CLng(Temp) > 0 Or (Nhom - i) Mod 3 = 0 Then
Dim Cum As String
Cum = ""
If CLng(Temp) > 0 Then
If Tram > 0 Or KetQua <> "" Then Cum = ChuSo(Tram) & " tram"
If Chuc = 0 Then
If DonViSo > 0 And (Tram > 0 Or KetQua <> "") Then Cum = Cum & " le"
If DonViSo > 0 Then Cum = Cum & " " & ChuSo(DonViSo)
ElseIf Chuc = 1 Then
Cum = Cum & " muoi"
If DonViSo = 5 Then
Cum = Cum & " lam"
ElseIf DonViSo > 0 Then
Cum = Cum & " " & ChuSo(DonViSo)
End If
Else
Cum = Cum & " " & ChuSo(Chuc) & " muoi"
If DonViSo = 1 Then
Cum = Cum & " mot"
ElseIf DonViSo = 5 Then
Cum = Cum & " lam"
ElseIf DonViSo > 0 Then
Cum = Cum & " " & ChuSo(DonViSo)
End If
End If
End If
j = (Nhom - i) Mod 3
Cum = Cum & Hang(j)
Cum = Cum & String$((Nhom - i) \ 3, 0)
KetQua = Trim(KetQua & " " & Trim(Cum))
If (Nhom - i) \ 3 > 0 Then KetQua = Trim(KetQua & " ty")
End If
Next i
KetQua = Application.WorksheetFunction.Trim(KetQua)
KetQua = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
If Am Then KetQua = "Am " & KetQua
DocSo = KetQua & " " & DonVi & " chan"
End FunctionCode trên đọc số không dấu để tránh lỗi font khi copy giữa các máy. Nếu cần kết quả có dấu tiếng Việt, hãy dùng công cụ đọc số trực tuyến rồi dán kết quả vào Excel.
Cách dùng
- 1Mở file Excel, nhấn Alt + F11 để mở cửa sổ VBA.
- 2Chọn Insert > Module, dán toàn bộ code VBA bên dưới vào.
- 3Đóng cửa sổ VBA, lưu file ở định dạng .xlsm (Excel Macro-Enabled Workbook).
- 4Tại ô bất kỳ gõ =DocSo(A1) hoặc =DocSo(A1;"VND") để đọc số ở ô A1 thành chữ.