Đọ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 quatangtanthegioi.com, 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 sau khi dùng hàm viết số tiền bằng chữ trong excel:

1. Việc đọc số tiền bằng chữ trong Excel mang lại khó khăn cho người dùng

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.

2. Cách lập công thức với hàm viết số tiền bằng chữ trong Excel (2007, 2010, 2013, 2016)

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.

2.1 Cách chuyển số bất kỳ về dạng số có trên 12 chữ số

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)

hàm excel đọc số tiền bằng chữ

2.2 Tách từng chữ số trong bảng ra 12 vị trí

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:

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:

Cách làm hàm đổi số thành chữ trong excel 2016

2.3 Hàm đọc từng vị trí bằng chữ

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)

2.4 Đọc vị trí hàng trăm tỷ

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 đó:

2.5 Đọc vị trí hàng chục tỷ

Các trường hợp logic có thể xảy ra với vị trí này bao gồm:

  1. Phần từ vị trí hàng chục tỷ trở về bên trái (từ C3:D3) có vị trí nào có số liệu không, hay nói cách khác là so sánh tổng C3:D3 có =0 hay không. Nếu =0 thì tức là không có nội dung gì. Khi đó sẽ không cần đọc vị trí này, kết quả là rỗng.
  2. Nếu logic trên là sai, tức là có thể có 1 trong 2 vị trí ở hàng trăm tỷ hoặc chục tỷ (hoặc cả 2) thì sẽ xét chi tiết hơn, bao gồm:

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ách làm hàm đọc số tiền bằng chữ trong excel 2007 2010 2013 2016

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í.

2.6 Đọc vị trí hàng tỷ (Hàng đơn vị)

Các trường hợp logic có thể xảy ra với vị trí này bao gồm:

  1. Phần từ vị trí hàng tỷ trở về bên trái (từ C3:E3) có vị trí nào có số liệu không, hay nói cách khác là so sánh tổng C3:E3 có =0 hay không. Nếu =0 thì tức là không có nội dung gì. Khi đó sẽ không cần đọc vị trí này, kết quả là rỗng.
  2. Nếu logic trên là sai, tức là có thể có 1 trong 3 vị trí thì sẽ xét chi tiết hơn, bao gồ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:

Cách lập công thức số tiền bằng chữ trong excel 2007 2010 2013 2016

 

2.7 Đọc vị trí hàng trăm triệu

Tại vị trí này, việc đọc giống như đọc ở vị trí hàng trăm tỷ. Tuy nhiên có thêm một số yêu cầu:

Công thức đọc số tiền bằng chữ tại vị trí hàng trăm triệu:

F5=IF(SUM(C3:F3)=0,””,IF(SUM(F3:H3)=0,””,IF(F3=0,”không trăm”,CHOOSE(F3,”một”,”hai”,”ba”,”bốn”,”năm”,”sáu”,”bảy”,”tám”,”chín”)&” trăm”)))

Trong đó:

2.8 Đọc ví trí hàng chục triệu 

Vị trí này đọc giống như hàng chục tỷ. Công thức tại vị trí hàng chục triệu:

G5=IF(SUM(C3:G3)=0,””,IF(AND(G3=0,H3=0),””,IF(AND(G3=0,H3<>0),G4,CHOOSE(G3,”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”))))

Trong đó:

  1. SUM(C3:G3)=0 để xét từ vị trí hàng chục triệu trở về bên trái (hàng trăm tỷ) có số nào lớn hơn 0 không
  2. AND(G3=0,H3=0) xét phần hàng chục triệu và hàng triệu có số nào >0 không, nếu đều =0 thì sẽ không đọc hàng chục triệu
  3. AND(G3=0,H3<>0) nếu không có hàng chục triệu (số 0) mà có hàng triệu (khác 0) thì sẽ đọc theo từ tại vị trí G4 (data validation/ List/ linh, lẻ)
  4. Còn lại thì đọc theo số hàng chục từ “mười” đến “chín mươi“

2.9 ĐỌC VỊ TRÍ HÀNG TRIỆU

Vị trí này đọc giống như hàng tỷ. Công thức tại vị trí hàng triệu:

H5=IF(SUM(F3:H3)=0,””,IF(AND(SUM(C3:G3)>0,H3=0),” “&H4,CHOOSE(H3,IF(G3>0,”mốt”,”một”),”hai”,”ba”,”bốn”,IF(G3>0,”lăm”,”năm”),”sáu”,”bảy”,”tám”,”chín”)&” “&H4))

Trong đó:

  1. SUM(F3:H3)=0 xét toàn bộ số hàng triệu, nếu đều = 0 thì không đọc hàng triệu
  2. AND(SUM(C3:G3)>0,H3=0) xét khi có phần lớn hơn hàng triệu nhưng tại vị trí hàng triệu thì = 0, thì chỉ đọc chữ “ triệu” chứ không phải đọc là “không triệu”
  3. Còn lại trường hợp có số hàng triệu thì đọc giống như cách đọc hàng tỷ, nhưng thay chữ “tỷ” bằng chữ “triệu” (vị trí H4) có kèm thêm dấu cách.

Như vậy kết quả hàng triệu như sau:

Hoàn thành đọc sỗ thành chữ hàng triệu trong excel

2.10 ĐỌC VỊ TRÍ HÀNG NGHÌN

Các vị trí ở hàng nghìn: trăm nghìn, chục nghìn, nghìn được đọc giống như ở hàng triệu. Điểm chú ý duy nhất là đơn vị ở hàng nghìn có 2 cách đọc: ngàn/ nghìn tùy theo địa phương. Do đó cần tạo danh sách chọn đơn vị này tại dòng 4, cột K (chữ số đơn vị hàng nghìn)

Đọc số tiền thành chữ hàng nghìn trong excel

Công thức tại các vị trí:

Như vậy kết quả hàng nghìn như sau:

Hoàn thành đổi số tiền thành chữ theo công thức cho hàng trăm, hàng chục, hàng nghìn trong file Excel

2.11 ĐỌC VỊ TRÍ HÀNG ĐƠN VỊ

Gồm các chữ số thể hiện tiền “lẻ“, gồm trăm đồng, chục đồng, đồng.

Ở hàng đơn vị có phân ra 2 loại là “Lẻ/chẵn” và cách đọc cũng có sự khác nhau.

Như vậy phần hàng trăm và hàng chục không ảnh hưởng gì, chỉ ảnh hưởng ở hàng đơn vị cuối cùng.

Trong đó:

  1. SUM(C3:N3)=0 là tổng toàn bộ các con số trong dãy số tiền. Nếu bằng 0 tức là không có đồng nào => Đọc là “không đồng”.
  2. AND(SUM(C3:K3)>0,SUM(L3:N3)=0) là có nhiều hơn 1 con số từ hàng tỷ tới hàng nghìn, kèm theo đó là không có số ở hàng đơn vị thì là “đồng chẵn”
  3. N3=0 là khi ngoài 2 logic trên sẽ là đồng lẻ (không đọc chữ “lẻ”, chỉ đọc là “đồng”), số 0 sẽ không đọc.
  4. Các số còn lại thì đọc giống các chữ số hàng đơn vị khác. Kết thúc với dấu “./.“

Kết quả cuối cùng như sau:

hoan thanh doc so bang chu hang don vi

XỬ LÝ VIẾT HOA CHỮ CÁI BẮT ĐẦU

Có 1 nguyên tắc là phải viết hoa chữ cái bắt đầu trong cả dãy số tiền bằng chữ. Tuy nhiên chúng ta phải xác định được tại vị trí nào là bắt đầu, và tại vị trí đó sẽ tách ký tự đầu tiên ra để viết hoa.

Logic trên có thể diễn giải như sau (viết công thức trên dòng 6):

  1. Nếu tại vị trí đọc ra chữ tương ứng là ô trống (giá trị rỗng) thì trả về giá trị rỗng (không xử lý)
  2. Nếu tại vị trí đó không rỗng thì xét tổng số ô trống ở phía trước nó có bằng với vị trí số đó không, nếu đúng thì sẽ xử lý viết hoa chữ cái đầu tiên, nếu không thì trả về giá trị đọc bằng chữ đã có.

Tại C6 ta có công thức:

IF(C5=””,””,IF(COUNTIF(B5:B5,””)=C2,UPPER(LEFT(C5,1))&RIGHT(C5,LEN(C5)-1),C5))

Trong đó:

  1. C5 là vị trí kết quả đã đọc bằng chữ cần xử lý
  2. COUNTIF(B5:B5,””) là đếm số ô trống trong vùng từ B5. Với các vị trí khác sẽ bắt đầu đếm từ B5 và tăng dần lên (sang bên phải)
  3. UPPER(LEFT(C5,1))&RIGHT(C5,LEN(C5)-1) là hàm xử lý viết hoa chữ cái đầu tiên trong nội dung ở C5

Xem lại bài viết: Hướng dẫn cách chỉ viết hoa chữ cái đầu tiên trong Excel

Fillright công thức tại C6 tới N6 (trong đó chú ý vị trí B5 đầu tiên trong hàm COUNTIF phải giữ nguyên, không được thay đổi; có thể cố định vị trí này với phím F4)

Kết quả thu được như sau:

viet hoa chu cai dau tien

(nên làm bước này trước, bởi làm ở bước sau thì hàm xử lý viết hoa sẽ rất dài, dễ bị rối)

GHÉP CÁC TỪ ĐÃ ĐỌC THÀNH KẾT QUẢ SỐ TIỀN BẰNG CHỮ

Từng vị trí chữ số đã được đọc, việc còn lại chỉ đơn giản làm ghép lại các từ này là xong.

Ở đây chúng ta có 12 vị trí nên sẽ phải ghép theo nguyên tắc sau:

  1. Mỗi vị trí (mỗi ô ở dòng 6) sẽ nối với vị trí bên cạnh nó và phải thêm 1 dấu cách ở giữa 2 chữ này.
  2. Dùng hàm TRIM để loại bỏ những dấu cách thừa trong kết quả ghép được.

Tại ô B2 chúng ta có kết quả như sau:

B2=TRIM(C6&” “&D6&” “&E6&” “&F6&” “&G6&” “&H6&” “&I6&” “&J6&” “&K6&” “&L6&” “&M6&” “&N6)

ket qua tien bang chu

Nếu việc ghép như trên là dài và mất nhiều công, bạn có thể tìm hiểu về hàm TEXTJOIN ở các phiên bản Excel2016 trở đi, công việc sẽ đơn giản hơn rất nhiều.

Tham khảo bài viết: GHÉP NỐI KÝ TỰ VỚI HÀM CONCAT VÀ TEXTJOIN TRONG EXCEL

KẾT LUẬN

Như vậy là chúng ta đã hoàn thành được hàm đọc số bằng chữ trong Excel rồi. Logic tuy dài dòng nhưng hoàn toàn có thể phân tích được, sử dụng những hàm Excel mà ai cũng biết. Bài toán này sẽ giúp các bạn luyện tập rất tốt cho việc phân tích logic, phát triển logic thành công thức, hàm trong Excel.

Ngoài ra tính ứng dụng của hàm này rất đơn giản, chúng ta chỉ cần làm như sau:

Ung dung doc so tien thanh chu

Nguồn: https://blog.hocexcel.online/huong-dan-cach-tu-xay-dung-cong-thuc-doc-so-tien-bang-chu-trong-excel-tu-a-den-z.html