Đọc hoặc đổi số thành chữ bằng hàm trong Excel

Khi làm việc với Excel đôi khi chúng ta có những hợp đồng hay hóa đơn mà chúng ta cần đổi số tiền thành chữ, đen đủi thay Excel không có sẵn hàm này. Có nhiều biện pháp giải quyết công việc khó nhằn này ví dụ như bạn có thể dùng add-in cài thêm để đọc số, đổi số thành chữ. Nhưng chuyển sang máy khác, thì họ lại không có sẵn add-in nên việc đọc số, đổi số lúc này bị lỗi. Vậy có cách đọc số thành chữ không dùng addins hay không ? Có cách nào có thể note lại làm với mọi máy hay không? Câu trả lời là có! Và đây là cách đổi số thành chữ bằng hàm trong Excel bằng tiếng Anh, lẫn tiếng Việt mà Học TV sưu tầm được.

Trong phạm vi bài viết này, Hoc TV sẽ hướng dẫn các bạn cách dùng hàm cho tham chiếu tới 1 hoặc nhiều ô để trả về kết quả cho 1 ô hoặc nhiều ô khác nhau tương tự như cách dùng add-in. Nếu bạn quan tâm cách dùng add-in, hoặc dùng hàm vận dụng ghép nối thì có thể tham khảo các bài viết khác của chúng mình.

Công thức đọc số thành chữ tiếng Anh bằng hàm trong excel

Giả sử bạn có số tiền ô A2, và bạn thiết lập công thức như sau tại ô B2, (để sao chép, các bạn chọn vào View Raw, rồi sau đó sao chép công thức nhé!)

=TRIM(IF(OR(LEN(FLOOR(A2,1))>=13,FLOOR(A2,1)<=0)+N(" Hoc.tv"),"Out of range",PROPER(SUBSTITUTE(CONCATENATE(
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),1,1)+1,"","one hundred ","two hundred ","three hundred ","four hundred ","five hundred ","six hundred ","seven hundred ","eight hundred ","nine hundred "),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),2,1)+1,"",
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),3,1)+1+N("Hoc.tv "),"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"),"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),2,1))>1,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),3,1)+1,"","-one","-two","-three","-four","-five","-six","-seven","-eight","-nine"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),2,1))=0,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),3,1)+1,"","one","two","three","four","five","six","seven","eight","nine"),"")),IF(A2>=10^9," billion ",""),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),4,1)+1+N(" Hoc.tv "),"","one hundred ","two hundred ","three hundred ","four hundred ","five hundred ","six hundred ","seven hundred ","eight hundred ","nine hundred "),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),5,1)+1+N("Hoc.tv"),"",
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),6,1)+1,"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"),"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),5,1))>1,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),6,1)+1,"","-one","-two","-three","-four","-five","-six","-seven","-eight","-nine"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),5,1))=0,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),6,1)+1,"","one","two","three","four","five","six","seven","eight","nine"),"")),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),4,3))>0," million ",""),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),7,1)+1,"","one hundred ","two hundred ","three hundred ","four hundred ","five hundred ","six hundred ","seven hundred ","eight hundred ","nine hundred "),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),8,1)+1,"",
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),9,1)+1,"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"),"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),8,1))>1,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),9,1)+1,"","-one","-two","-three","-four","-five","-six","-seven","-eight","-nine"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),8,1))=0,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),9,1)+1,"","one","two","three","four","five","six","seven","eight","nine"),"")),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),7,3))," thousand ",""),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),10,1)+1,"","one hundred ","two hundred ","three hundred ","four hundred ","five hundred ","six hundred ","seven hundred ","eight hundred ","nine hundred "),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),11,1)+1,"",
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),12,1)+1,"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"),"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),11,1))>1,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),12,1)+1,"","-one","-two","-three","-four","-five","-six","-seven","-eight","-nine"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),11,1))=0,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),12,1)+1,"","one","two","three","four","five","six","seven","eight","nine"),""))),"  "," ")&IF(FLOOR(A2,1)>1," dollars"," dollar"))&IF(ISERROR(FIND(".",A2,1))," and No Cents"," and "&PROPER(IF(LEN(LEFT(TRIM(MID(SUBSTITUTE(A2,".",REPT(" ",255)),255,200)),2))=1,
CHOOSE(1*LEFT(TRIM(MID(SUBSTITUTE(A2,".",REPT(" ",255)),255,200)),2),"ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety")&" Cents","")&CONCATENATE(
CHOOSE(MID(TEXT(INT(LEFT(TRIM(MID(SUBSTITUTE(A2,".",REPT(" ",255)),255,200)),2)),REPT(0,12)),11,1)+1,"",
CHOOSE(MID(TEXT(INT(LEFT(TRIM(MID(SUBSTITUTE(A2,".",REPT(" ",255)),255,200)),2)),REPT(0,12)),12,1)+1,"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen")&" Cents","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"),IF(VALUE(MID(TEXT(INT(LEFT(TRIM(MID(SUBSTITUTE(A2,".",REPT(" ",255)),255,200)),2)),REPT(0,12)),11,1))>1,
CHOOSE(MID(TEXT(INT(LEFT(TRIM(MID(SUBSTITUTE(A2,".",REPT(" ",255)),255,200)),2)),REPT(0,12)),12,1)+1,"","-one","-two","-three","-four","-five","-six","-seven","-eight","-nine")&" Cents",IF(LEFT(TRIM(MID(SUBSTITUTE(A2,".",REPT(" ",255)),255,200)),2)="01","one cent",IF(LEFT(TRIM(MID(SUBSTITUTE(A2,".",REPT(" ",255)),255,200)),1)="0",
CHOOSE(MID(TEXT(INT(LEFT(TRIM(MID(SUBSTITUTE(A2,".",REPT(" ",255)),255,200)),2)),REPT(0,12)),12,1)+1+N("Hoc.tv"),"","one","two","three","four","five","six","seven","eight","nine")&" Cents",""))))))))

Kết quả ta có hàm vận dụng để đọc số tiền thành chữ, bạn có nhiều ô khác nhau, chỉ việc sửa tham chiếu ô tương ứng là có thể áp dụng được. Tiếng Anh bạn có thể đọc số lẻ phần thập phân.

Công thức đọc số thành chữ tiếng việt bằng hàm trong excel.

Tương tự đọc số bằng tiếng Anh, bạn có thể vận dụng công thức chuyển đổi số thành chữ sau để đọc số thành chữ cho tiếng Việt. 

=IF(OR(LEN(FLOOR(A2,1))>=13,FLOOR(A2,1)<=0)+N(T("Hoc.tv")),"Không thể đọc số",TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(CONCATENATE(
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),1,1)+1,"","một trăm ","hai trăm ","ba trăm ","bốn trăm ","năm trăm ","sáu trăm ","bảy trăm ","tám trăm ","chín trăm "),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),2,1)+1,"",
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),3,1)+1,"mười","mười một","mười hai","mười ba","mười bốn","mười lăm","mười sáu","mười bảy","mười tám","mười chín"),"hai mươi","ba mươi","bốn mươi","năm mươi","sáu mươi","bảy mươi","tám mươi","chín mươi"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),2,1))>1,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),3,1)+1,""," mốt"," hai"," ba"," bốn"," lăm"," sáu"," bảy"," tám"," chín"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),2,1))=0,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),3,1)+1,"","một","hai","ba","bốn","năm","sáu","bảy","tám","chín"),"")),IF(A2>=10^9," tỷ%%% ",""),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),4,1)+1,IF(AND(INT(A2)>1000000000,VALUE(MID(TEXT(INT(A2),REPT(0,12)),4,3))<>0),"không trăm ",""),"một trăm ","hai trăm ","ba trăm ","bốn trăm ","năm trăm ","sáu trăm ","bảy trăm ","tám trăm ","chín trăm "),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),5,1)+1,IF(AND(INT(A2)>100000000,VALUE(MID(TEXT(INT(A2),REPT(0,12)),5,2))<>0),"@@@ ",""),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),6,1)+1,"mười","mười một","mười hai","mười ba","mười bốn","mười lăm","mười sáu","mười bảy","mười tám","mười chín"),"hai mươi","ba mươi","bốn mươi","năm mươi","sáu mươi","bảy mươi","tám mươi","chín mươi"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),5,1))>1,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),6,1)+1,""," mốt"," hai"," ba"," bốn"," lăm"," sáu"," bảy"," tám"," chín"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),5,1))=0,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),6,1)+1,"","một","hai","ba","bốn","năm","sáu","bảy","tám","chín"),"")),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),4,3))>0," triệu%%% ",""),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),7,1)+1,IF(AND(INT(A2)>1000000,VALUE(MID(TEXT(INT(A2),REPT(0,12)),7,3))<>0),"không trăm ",""),"một trăm ","hai trăm ","ba trăm ","bốn trăm ","năm trăm ","sáu trăm ","bảy trăm ","tám trăm ","chín trăm "),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),8,1)+1,IF(AND(INT(A2)>100000,VALUE(MID(TEXT(INT(A2),REPT(0,12)),8,2))<>0),"@@@ ",""),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),9,1)+1,"mười","mười một","mười hai","mười ba","mười bốn","mười lăm","mười sáu","mười bảy","mười tám","mười chín"),"hai mươi","ba mươi","bốn mươi","năm mươi","sáu mươi","bảy mươi","tám mươi","chín mươi"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),8,1))>1,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),9,1)+1,""," mốt"," hai"," ba"," bốn"," lăm"," sáu"," bảy"," tám"," chín"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),8,1))=0,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),9,1)+1,"","một","hai","ba","bốn","năm","sáu","bảy","tám","chín"),"")),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),7,3))," ###"&IF(--RIGHT(A2,3)=0," ","%%% "),""),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),10,1)+1,IF(AND(INT(A2)>1000,VALUE(MID(TEXT(INT(A2),REPT(0,12)),10,3))<>0)+N(T("Hoc.tv")),"không trăm ",""),"một trăm ","hai trăm ","ba trăm ","bốn trăm ","năm trăm ","sáu trăm ","bảy trăm ","tám trăm ","chín trăm "),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),11,1)+1,IF(AND(INT(A2)>10,VALUE(MID(TEXT(INT(A2),REPT(0,12)),11,2))<>0),"@@@ ",""),
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),12,1)+1,"mười","mười một","mười hai","mười ba","mười bốn","mười lăm","mười sáu","mười bảy","mười tám","mười chín"),"hai mươi","ba mươi","bốn mươi","năm mươi","sáu mươi","bảy mươi","tám mươi","chín mươi"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),11,1))>1,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),12,1)+1,""," mốt"," hai"," ba"," bốn"," lăm"," sáu"," bảy"," tám"," chín"),IF(VALUE(MID(TEXT(INT(A2),REPT(0,12)),11,1))=0,
CHOOSE(MID(TEXT(INT(A2),REPT(0,12)),12,1)+1,"","một","hai","ba","bốn","năm","sáu","bảy","tám","chín"),""))),"@@@","linh"),"###","ngàn"),"%%%",", "),"  "," ")&" đồng"&T(N("Hoc.tv: Có thể sửa tùy chọn @@@ linh, ### ngàn, %%% dấu phẩy, và bỏ đồng"))))

bạn có thể linh hoạt lựa chọn giữa “nghìn và ngàn”, “linh và lẻ”. Hoặc áp dụng với việc sửa thay thế hoặc bỏ chữ “đồng” cụm từ ở cuối công thức: “@@@”,”lẻ“),”###”,”nghìn“),”%%%”,”, [sửa chỗ này nếu muốn bỏ dấu phẩy]“),” “,” “)&” đồng“))

Bình luận