Đọc số tiền thành chữ là một trong số những chủ đề rất được quan tâm trên Excel. Trong hầu hết các loại giao dịch: hợp đồng, hóa đơn… đều yêu cầu phải đọc số tiền bằng chữ. Trong những bài viết trước đây của Học Excel Online, chúng ta đã biết tới cách sử dụng Add-in trong Excel để làm việc này. Còn trong bài viết này, chúng ta sẽ biết thêm một cách làm khác: Sử dụng hàm, công thức trong Excel để đọc số tiền thành chữ. Hãy cùng tìm hiểu ngay nào.
Đây là kết quả chúng ta sẽ đạt được:
Tải về file mẫu tại địa chỉ: http://bit.ly/2Upapa1
Xem nhanh
Trước khi đi vào tìm hiểu cách làm, xin phép được nhắc lại một số vấn đề khiến cho việc đọc số tiền bằng chữ lại “khó“, khiến nhiều người không làm được:
Với những vấn đề phức tạp trên, chúng ta sẽ thực hiện việc xây dựng hàm đọc số tiền bằng chữ theo từng bước để tránh nhầm lẫn.
Trong phạm vi bài viết này, chúng ta sẽ tìm hiểu cách đọc số tới hàng trăm tỷ (gồm 12 chữ số). Những số từ hàng nghìn tỷ trở lên các bạn tự phát triển tiếp theo ý tưởng của bài viết.
Bản chất của 1 con số là không có số 0 ở trước (hoặc có thì cũng không có ý nghĩa gì). Tuy nhiên khi muốn phân tách thứ tự của từng vị trí các số ra tương ứng từng chữ số, chúng ta lại cần phải chuyển con số về dạng có đủ 12 chữ số, nếu số đó nhỏ hơn hàng trăm tỷ thì phải thêm số 0 ở trước.
Phương pháp đơn giản để chuyển 1 số về dạng số có trên 12 chữ số là cộng số đó với 10 mũ 12 (một số có 12 chữ số 0 ở phía sau)
Ví dụ:
Số 10.010.001.010 là số có 11 chữ số. Khi đem số này cộng với 10^12 ta có kết quả là: 1.010.010.001.010
Nếu lấy 12 chữ số từ phải qua trái thì ta có kết quả 010.010.001.010. Số này về bản chất giống với số ban đầu với 11 chữ số, nhưng có thêm số 0 ở trước để phản ánh đúng từng con số trong các chữ số.
Từ cột C đến cột N, chúng ta có 12 số tương ứng từ 1 đến 12 (dòng 2) giúp nhận biết từng vị trí các chữ số.
Tương ứng với các cột này, tại dòng 3 chúng ta sẽ dùng hàm để tách từng vị trí các chữ số trong dãy số ở ô B2 như sau:
Sử dụng hàm MID để tách từng vị trí trong dãy số, trong đó:
Tuy nhiên hàm MID chỉ trả về dữ liệu là dạng text. Do đó chúng ta kết hợp thêm hàm VALUE để chuyển kết quả về dữ liệu dạng Number (tránh xung đột về bản chất dữ liệu)
C3=MID($B$2,C2+1,1)
Từ C3:N3 chúng ta sao chép công thức từ C3 sang phải (thao tác Fill Right, phím tắt Ctrl+R)
Kết quả chúng ta có được từng vị trí các con số tương ứng như sau:
Vì các vị trí có thể bao gồm các số từ 0 đến 9, trong đó số 0 lại có cách đọc rất đặc biệt, phụ thuộc vào trước đó có số nào khác 0 không, nên khi đọc số ra chữ chúng ta phải xét 2 phần:
Các hàm sẽ viết ở dòng 5 (dòng 4 phục vụ cho mục đích chuyển đổi các từ mang yếu tố địa phương để tùy biến cách đọc cho phù hợp)
Tại vị trí này là vị trí đầu tiên trong chuỗi 12 chữ số, do đó không xét phần bên trái mà xét ngay tại vị trí đó là ô C3
Hàm tại C5 được viết như sau:
IF(C3=0,””,CHOOSE(C3,”một”,”hai”,”ba”,”bốn”,”năm”,”sáu”,”bảy”,”tám”,”chín”)&” trăm”)
Trong đó:
Các trường hợp logic có thể xảy ra với vị trí này bao gồm:
1. Hàng chục tỷ và hàng tỷ không có con số nào (đều bằng 0) thì sẽ không đọc phần hàng chục tỷ (dù có số hàng trăm tỷ thì chỉ đọc hàng trăm, không đọc hàng chục)
2. Hàng chục tỷ = 0 nhưng hàng tỷ thì có (khác 0) thì sẽ đọc theo phiên âm được chọn ở D4, là “linh” hoặc “lẻ” (tức là có hàng trăm, có hàng đơn vị nhưng không có hàng chục thì sẽ đọc hàng chục là linh/lẻ tùy theo tiếng địa phương)
Công thức tại ô D5 được viết như sau:
D5=IF(SUM(C3:D3)=0,””,IF(AND(D3=0,E3=0),””,IF(AND(D3=0,E3<>0),D4,CHOOSE(D3,”mười”,”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”))))
Chú ý: Hàng đơn vị khi đọc các con số bằng chữ sẽ khác với hàng trăm ở những vị trí:
Tại vị trí D4 thiết lập danh sách chọn theo Data Validation/List:
Có thể thấy công thức xét nhiều hàm IF hơn, bởi logic phức tạp hơn. Trong một số logic có sử dụng thêm hàm SUM, hàm AND để xét đồng thời các vị trí.
Các trường hợp logic có thể xảy ra với vị trí này bao gồm:
1. Tại vị trí hàng tỷ = 0 và trước đó có số >0 thì chỉ đọc là “tỷ” mà không thèm theo phần đọc chữ số. Có thể phiên âm là “tỷ” hay “tỉ” tùy theo tiếng địa phương. Vậy có thể thiết lập data validation / list chọn tại ô E4 để lấy theo vị trí E4
2. Không đúng theo logic 1 thì tức là tại vị trí E3 có con số. Khi đó việc đọc số ở E3 ra chữ phụ thuộc theo chữ số ở phía trước nó (hàng chục). Chú ý sẽ đọc khác ở vị trí số 1 và số 5 như sau:
Nếu có phần hàng chục thì hàng đơn vị đọc là 1=mốt và 5=lăm
Nếu không có phần hàng chục thì hàng đơn vị đọc là 1=một và 5=năm
Lưu ý: Ngoài ra có thể tùy biến ở vị trí số 4 đọc là “bốn” hay “tư” tùy theo cách đọc từng địa phương. Có thể tạo danh sách chọn riêng cho từ này và tham chiếu ở vị trí “bốn” cho giá trị được chọn đó.
Công thức tại ô E5 được viết như sau:
E5=IF(SUM(C3:E3)=0,””,IF(AND(SUM(C3:D3)>0,E3=0),” “&E4,CHOOSE(E3,IF(D3>0,”mốt”,”một”),”hai”,”ba”,”bốn”,IF(D3>0,”lăm”,”năm”),”sáu”,”bảy”,”tám”,”chín”)&” “&E4))
Như vậy chúng ta đã đọc xong phần hàng tỷ. Kết quả như sau:
Nội dung bài viết đã dài, mời các bạn xem tiếp nội dung ở phần 2 của bài viết này tại địa chỉ:
Hướng dẫn cách tự xây dựng công thức đọc số tiền bằng chữ trong excel – Phần 2
Cảm ơn các bạn đã chú ý theo dõi!
Tham khảo:
Add-in đọc số thành chữ từ Học Excel Online
Cách viết số tiền bằng chứ trong excel theo cách đơn giản nhất