Hàm đọc số thành chữ
Công thức chuyển số thành chữ sử dụng được trên Excel 2007 trở lên.
Tiếng Việt:
=IF(ABS(A1)>=10^15;"###";IF(A1<0;"Âm ";MID("KMHBBNSBTC";LEFT(ROUND(A1;0))+1;1))&MID(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(TEXT(A1;SUBSTITUTE("0*0=0/0*0;0*0=0/0*0";0;"0-0+0"));LEN(ROUND(ABS(A1);0))*2-1);"0-0+0*";"");"0-0+0/";"");"0-0+0";"");"0+0";"");"0+";" lẻ");"+0";"+");"+5";"+ lăm");"1+";" mười");"+1";"+ mốt");0;" không");1;" một");2;" hai");3;" ba");4;" bốn");5;" năm");6;" sáu");7;" bảy");8;" tám");9;" chín");"+";" mươi");"-";" trăm");"*";" ngàn,");"/";" triệu,");",=";"=");"=";" tỷ,")&" ";", ";""));2-(A1<0);999))
Tiếng Anh:
=IF(ABS(A1)>=10^15;"###";IF(A1<0;"Negative ";MID("ZOTTFFSSENTETTFFSSEN";LEFT(ROUND(A1;0);IFERROR(IF(LEFT(ROUND(A1;0))*MOD(INT(LOG10(ROUND(ABS(A1);0)));3)=1;2;1);1))+1;1))&MID(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(TEXT(A1;SUBSTITUTE("0\0=0/0*0;0\0=0/0*0";0;"0-0+0"));LEN(ROUND(ABS(A1);0))*2-1);"0-0+0=";"");"0-0+0/";"");"*0-";"* and");"0-0+0*";"");"0-";"");"0+";"");"1+0";" ten");"1+1";" eleven");"1+2";" twelve");"1+3";" thirteen");"1+4";"4teen");"1+5";" fifteen");"1+6";"6teen");"1+7";"7teen");"1+8";"8een");"1+9";"9teen");"2+";" twenty:");"3+";" thirty:");"4+";" forty:");"5+";" fifty:");"8+";"8y:");"+";"ty:");"y:0";"y");0;" zero");1;" one");2;" two");3;" three");4;" four");5;" five");6;" six");7;" seven");8;" eight");9;" nine");"-";" hundred and");"*";" thousand,");"/";" million,");"=";" billion,");"";" trillion,");": ";"-");" and zero";"");", a";" a")&" ";", ";""));2-(A1<0);999))
Lưu ý: Các công thức trên chỉ chuyển được số trong phạm vi từ -10^15+1 đến 10^15-1, ngoài phạm vi này công thức sẽ trả về "###"
Công thức chuyển số thành chữ tiếng Việt và tiếng Anh sử dụng trên Excel 365 và Goolge Sheet, không giới hạn độ lớn của số cần đọc (số lớn nhập vào dạng chuỗi).
Tiếng Việt:
=LET(so;A1;d;SIGN(so)+2;n;"00"&IF(ISTEXT(so);MID(so;1+(d=1);99);TEXT(so;"0;0"));l;LEN(n);g;INT(l/3);r;SUBSTITUTE(TEXTJOIN(",";1;MAP(SEQUENCE(g;1;g;-1);LAMBDA(k;LET(s;LEFT(n;l-k*3+3);a;{"không";"một";"hai";"ba";"bốn";"năm";"sáu";"bảy";"tám";"chín"};b;MIN(k;MOD(k-2;3)+2);x;RIGHT(s;3)*1;y;MOD(x;100);z;MOD(y;10);IF(x>0;IF(LEN(s)>4;" "&INDEX(a;INT(x/100)+1)&" trăm"&IF(AND(y<10;z>0);" lẻ";"");"")&IF(y>=20;" "&INDEX(a;INT(y/10)+1)&" mươi";IF(y>=10;" mười";""))&IF(z>0;LET(t;(y>11)*((z=1)+(z=5)*2)+1;" "&CHOOSE(t;INDEX(a;z+1);"mốt";"lăm"));"")&CHOOSE(b;"";" ngàn";" triệu";" tỷ");IF(b=4;" tỷ";""))))));", tỷ";" tỷ");CHOOSE(d;"Âm"&r;"Không";UPPER(MID(r;2;1))&MID(r;3;999)))
Tiếng Anh:
=LET(so;A1;d;SIGN(so)+2;n;"00"&IF(ISTEXT(so);MID(so;1+(d=1);99);TEXT(so;"0;0"));l;LEN(n);g;INT(l/3);r;SUBSTITUTE(TEXTJOIN(",";1;MAP(SEQUENCE(g;1;g;-1);LAMBDA(k;LET(s;LEFT(n;l-k*3+3);a;{"zero";"one";"two";"three";"four";"five";"six";"seven";"eight";"nine";"ten";"eleven";"twelve";"thirteen";"fourteen";"fifteen";"sixteen";"seventeen";"eighteen";"nineteen"};b;{"";"twenty";"thirty";"forty";"fifty";"sixty";"seventy";"eighty";"ninety"};x;RIGHT(s;3)*1;y;MOD(x;100);z;MOD(y;10);IF(x>0;IF(LEN(s)>4;IF(x<100;IF(k=1;" and";"");" "&INDEX(a;INT(x/100)+1)&" hundred"&IF(y>0;" and";""));"")&IF(y>=20;" "&INDEX(b;INT(y/10))&IF(z>0;"-"&INDEX(a;z+1);"");IF(y>0;" "&INDEX(a;y+1);""))&CHOOSE(k;"";" thousand"; " million"; " billion"; " trillion";" quadrillion";" quintillion";" sextillion";" septillion";" octillion");"")))));", and";" and");CHOOSE(d;"Negative"&r;"Zero";UPPER(MID(r;2;1))&MID(r;3;999)))
—
-460.101.895.031
Âm bốn trăm sáu mươi tỷ, một trăm lẻ một triệu, tám trăm chín mươi lăm ngàn, không trăm ba mươi mốt
Negative four hundred and sixty billion, one hundred and one million, eight hundred and ninety-five thousand and thirty-one
Dùng Add-in "VnTools"
🔹 Mô tả:
- Hỗ trợ hàm =VND(số) chuyển số thành chữ
- Ví dụ: =VND(1250000) ➝ "Một triệu hai trăm năm mươi ngàn đồng chẵn"
🔹 Cài đặt:
- Tải VnTools tại:
https://drive.usercontent.google.com/download?id=1mSxeTYtA0qgPBS7gG_UsGT4CGhDk_YZc&export=download&authuser=0
- Mở Excel → File → Options → Add-ins → Excel Add-ins → Browse → chọn file VnTools-Excel.xlam
- Dùng hàm
=VND(A1)
🔹 Ưu điểm:
- Dùng đơn giản như công thức
- Hỗ trợ tiếng Việt
- Không cần viết lại công thức phức tạp
Dùng VBA Tùy chỉnh (tương thích mọi Excel)
🔹 Bước 1: Nhấn Alt + F11 để mở Visual Basic Editor
🔹 Bước 2: Thêm Module mới, dán code sau:
Function DocSo(ByVal SoTien As Double) As String
Dim ChuSo() As String
Dim Hang() As String
Dim i As Integer, j As Integer, donvi As Integer
Dim KetQua As String, S As String, Tien As String
Dim Ngan As Integer, Trieu As Integer, Ty As Integer
ChuSo = Split("không,một,hai,ba,bốn,năm,sáu,bảy,tám,chín", ",")
Hang = Split(""," nghìn"," triệu"," tỷ"," nghìn tỷ"," triệu tỷ")
If SoTien = 0 Then
DocSo = "Không đồng"
Exit Function
End If
If SoTien < 0 Then
Tien = "Âm "
SoTien = -SoTien
End If
S = Format(Int(SoTien), "000000000000000")
j = 1
For i = 1 To Len(S) Step 3
donvi = Val(Mid(S, i, 3))
If donvi > 0 Then
KetQua = KetQua & Doc3ChuSo(donvi, ChuSo) & Hang((Len(S) - i) 3) & " "
End If
Next i
DocSo = Application.WorksheetFunction.Proper(Tien & Trim(KetQua) & "đồng chẵn")
End Function
Private Function Doc3ChuSo(ByVal n As Integer, ChuSo() As String) As String
Dim Tram As Integer, Chuc As Integer, DonVi As Integer
Dim KetQua As String
Tram = n 100
Chuc = (n 10) Mod 10
DonVi = n Mod 10
If Tram > 0 Then KetQua = ChuSo(Tram) & " trăm "
If Chuc > 1 Then
KetQua = KetQua & ChuSo(Chuc) & " mươi "
If DonVi = 1 Then
KetQua = KetQua & "mốt"
ElseIf DonVi = 5 Then
KetQua = KetQua & "lăm"
ElseIf DonVi > 0 Then
KetQua = KetQua & ChuSo(DonVi)
End If
ElseIf Chuc = 1 Then
KetQua = KetQua & "mười "
If DonVi = 5 Then
KetQua = KetQua & "lăm"
ElseIf DonVi > 0 Then
KetQua = KetQua & ChuSo(DonVi)
End If
ElseIf DonVi > 0 Then
KetQua = KetQua & "lẻ " & ChuSo(DonVi)
End If
Doc3ChuSo = KetQua
End Function
Bước 3: Trong Excel, dùng hàm:
=DocSo(A1)
Kết quả:
"Một triệu hai trăm nghìn đồng chẵn" nếu A1 = 1,200,000
Học Nhân sự Tổng hợp – Trở thành chiến binh nhân sự vững nghiệp vụ
Con người là một trong những yếu tố quan trọng của công ty, là tài sản quý giá của doanh nghiệp. Chính vì thế,...
Xem khóa họcBạn nên đọc

Công thức mảng trong Excel

Trích lọc dữ liệu trùng lặp trong nhiều cột nhiều sheets

Cách thay thế công thức bằng kết quả hoặc giá trị trong Excel

HƯỚNG DẪN VBA CƠ BẢN CHO NGƯỜI MỚI BẮT ĐẦU

Macro gộp dữ liệu nhiều sheets Excel vào 1 sheet
