Hàm UDF Đọc số thành chữ, chuyển chữ thành số, kể cả số thập phân

Liên hệ QC

HeSanbi

Nam Nhân✨Hiếu Lễ Nghĩa Trí Tín✨
Tham gia
24/2/13
Bài viết
2,382
Được thích
3,536
Giới tính
Nam
*****CẬP NHẬT: 27/04/2023 *****

Hôm nay tôi mang đến cho các bạn một giải pháp đọc số thành chữ tối ưu, và đa dạng tùy chọn kiểu trả về kết quả để phù hợp với nhu cầu từng trường hợp cho văn bản hay biên bản, hàm mới này thay vì chỉ đọc duy nhất số thì hàm có thể đọc được số trong chuỗi chứa số, để bỏ qua giai đoạn bóc tách số trong chuỗi số tốn kém tài nguyên.
Ưu điểm của hàm có để đọc số rất lớn, lớn nhất có thể. Và hàm cũng có thể đọc số thập phân một cách dễ dàng.

Hàm có thêm các tham số tiện lợi:

  1. Các kiểu trả kết quả hoa thường tùy chọn
  2. Tùy chọn đọc hoặc không đọc "không trăm"
  3. Tùy chọn thay thế số đã đọc hoặc thêm vào sau số đó.
  4. Đọc các số riêng lẻ trong chuỗi chứa số, hoặc trích xuất số và đọc
  5. Thêm chuỗi trước hoặc sau

Thêm một hàm dịch ngược chữ thành số, sẽ giúp các bạn dễ dàng chuyển chuỗi thành số, rà soát lỗi viết chữ.

Thêm một hàm nữa dùng để chuyển mọi kiểu định dạng số về dạng cơ bản để dễ dàng phân tích.

Trong định dạng số có nhiều kiểu định dạng khác nhau, ví dụ như:

  1. 1,000,000,00 số này vẫn đọc là một tỷ tuy nhiên được lọc bớt số 0 để rút gọn.
  2. 1.25E+20 hoặc 1.25E-20 Đây là một định dạng rút ngắn một số quá dài so với số mắt thường đọc được.
  3. Các số được định dạng phân cách nghìn: 1,000,000 , 1.000.000, 1.000_000.000.000_000.000.000
  4. Số lũy thừa: chỉ có thể đọc tại ô chứa giá trị

HƯỚNG DẪN HÀM:

=SpellNumVN([Chuỗi/Danh sách],[Đối_số_cài_đặt])


Hàm đối số cài đặt
Diễn giải
=snNumberIndexs(Indexs)​
Nếu để số: 0 thì đọc tất cả số, 1 đọc số thứ nhất, {1;3} hay {1\ 3} đọc số vị trí 1 và 3, Số âm -2 thì trích và đọc duy nhất vị trí số thứ 2 trong chuỗi chứa số.​
=snNotReadZero()​
Không đọc số không hàng Trăm và Triệu
=snNotGroupDivision()​
Không nhóm mỗi 1000 hoặc 1 tỷ đơn vị với dấu ngắt.​
=snReplaceNumbers()​
Lựa chọn thay thế hoặc thêm vào đằng sau số được đọc​
=snSpellPercent()​
Đọc phần phân số​
=snSentenceSpace(" ")​
Dấu cách khi đọc số​
=snUnitCode("USD",1,True)
Thêm đơn vị tiền tệ "Đô-la" và quốc gia đại diện "Mỹ"​
=snText("(",")")​

Thêm chuỗi bên trái và bên phải nếu cần thiết

(***Lưu ý: Các hàm trên viết là snSpellPercent() thì không cần truyền đối số)

Các kiểu đọc đơn vị tiền tệ (Hàm đối số):
(Có gần 200 đơn vị tiền tệ)
=snUnitCode("USD")
1 - thêm đơn vị tiền tệ "Đô-la."​
=snUnitCode("USD",2)
2 - thêm đơn vị tiền tệ "(Đô-la.)"​
=snUnitCode("USD",3)
3 - thêm đơn vị tiền tệ "[Đô-la.]"​
=snUnitCode("USD",1,True)
"Đô-la Mỹ." đơn vị tiền tệ và tên địa lý​
=snUnitCode("VND",1,True)
"Việt Nam đồng." đơn vị tiền tệ và tên địa lý​
Hoặc sử dụng hàm thêm chuỗi snText(," Đô-la Hồng-Kông.")


Có 6 kiểu chữ viết Hoa thường:
Hàm
Kiểu chữ viết
Ví dụ
=snCaseLower()​
Chữ thường​
một triệu không trăm năm mươi ngàn đồng​
=snCaseSentence()​
Chữ hoa ký tự đầu tiên của chuỗi​
Hai triệu đồng​
=snCaseTitle()​
Chữ Hoa ký tự đầu tất cả từ​
Bảy Mươi Triệu Hai Trăm Năm Mươi Ngàn​
=snCaseUpper()​
Chữ Hoa​
BA TRĂM NĂM MƯƠI TRIỆU​
=snCaseThousands()​
Chữ Hoa sau mỗi 1000 đơn vị​
Chín triệu không trăm năm mươi tỷ, Ba trăm hai mươi bảy triệu, Năm trăm.​
=snCaseBillion()​
Chữ Hoa sau mỗi 1 tỷ đơn vị​
Hai mươi lăm triệu, không trăm năm mươi sáu tỷ. Ba trăm hai mươi bảy triệu, năm trăm.​

Nếu gõ công thức =SpellNumVN("1000000") , thì các tham số còn lại là mặc định
Để đặt thêm đối số hãy gõ sn để được gợi ý hàm cài đặt đối số ví dụ: =SpellNumVN("1000000",snUnitCode("USD",1,True))


Lưu ý: Để sử dụng được Hàm SpellNum trong dự án mới, hãy sao chép module zzzzSpellNumber
Ví dụ:

Để sử dụng được hàm SpellNumVN trong ứng dụng Excel của bạn hãy sao chép mã vào Module.

---------------------------------------------------------
Bạn có thể đọc thêm các bài biết của tôi tại tag #sanbi udf
 

File đính kèm

  • S_ReadNumber.xlsm
    223.9 KB · Đọc: 80
Lần chỉnh sửa cuối:
*****CẬP NHẬT: 27/04/2023 *****
Hàm đọc số phiên bản mới. Phương pháp gõ hàm cài đặt đối số đơn giản và hiệu quả hơn.
Thêm trường hợp đọc "không triệu" để việc đọc được lưu lót. Ví dụ:


Với số:
-8,001,000,000,000,000,000,500,440,060,001
Đọc là:
Âm Tám nghìn, Không trăm lẻ một tỷ. Tỷ. Không triệu, Năm trăm tỷ. Bốn trăm bốn mươi triệu, Không trăm sáu mươi nghìn, Không trăm lẻ một
Các bạn thử đọc bỏ đi "Không triệu", sẽ thấy không lưu lót, bị khựng.

Một ví dụ đơn giản cho các bạn dễ hình dung. Chứ con số này chỉ có trong thiên văn.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom