



Tuyệt vời bác!*****CẬP NHẬT: 19/07/2024 *****
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:
- Các kiểu trả kết quả hoa thường tùy chọn
- Tùy chọn đọc hoặc không đọc "không trăm"
- Tùy chọn thay thế số đã đọc hoặc thêm vào sau số đó.
- Đọc các số riêng lẻ trong chuỗi chứa số, hoặc trích xuất số và đọc
- 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,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.
- 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.
- 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
- 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ốsnDotPercent() Đọc là chấm thay cho phẩy snSpellDivision() Đọc phép chia tiêu chuẩn của 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




Bác cho em hỏi: nếu muốn ngăn cách kiểu khi đọc bằng dấu "," và sau khi đọc có "đồng" như ví dụ cụ thể (hình dưới) thì sử dụng hàm thế nào ạ, cảm ơn bác!*****CẬP NHẬT: 19/07/2024 *****
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:
- Các kiểu trả kết quả hoa thường tùy chọn
- Tùy chọn đọc hoặc không đọc "không trăm"
- Tùy chọn thay thế số đã đọc hoặc thêm vào sau số đó.
- Đọc các số riêng lẻ trong chuỗi chứa số, hoặc trích xuất số và đọc
- 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,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.
- 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.
- 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
- 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ốsnDotPercent() Đọc là chấm thay cho phẩy snSpellDivision() Đọc phép chia tiêu chuẩn của 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

Cách 2:=SpellNumVN(E1,snCaseThousands(), snText(," đồng"))
=SpellNumVN(E1,snCaseThousands(), snUnitCode("VND",1,True))




Cảm ơn bác, em đọc cứ bị ra dấu "." mà không có dấu "," anh ạ, làm theo bác hướng dẫn thì kết quả như hình dướiBạn nhập như sau:
Cách 1:
Cách 2:





Vâng em cảm ơn bác, em cũng xem rồi nhưng chưa tìm được kiểu đổi dấu ".' thành dấu '," ạ! đọc cách gì cũng có dấu "." như vậy, Hy vọng phiên bản tiếp theo bác bổ sung tính năng này.Trong tệp đã có các ví dụ cụ thể, bạn xem xem




Vâng em, cảm ơn bác ạ@vc_đi chơi Trong mã của hàm SpellNumVN bạn sửa egd = "." thành egd = "," là được




Bác cho em hỏi thêm chút ạ, em đọc muốn "lẻ" thành "linh" thì thay đổi chỗ nào trong code ạ!@vc_đi chơi Trong mã của hàm SpellNumVN bạn sửa egd = "." thành egd = "," là được









Em cảm ơn Bác.@vc_đi chơi Bạn nhập thêm đối số snSoutherners() là dành cho đọc theo miền nam như lẻ, lăm, ngàn. Tệp trước là phiên bản cũ. Bạn nên tải lại tệp mới.
Cảm ơn bạn nhé!Chữ "lẻ" khi mã hóa nó có dạng "l" & ChrW(7867). Bạn thử vào từng Module thay thế nó thành "linh" xem thế nào
View attachment 308508




Em miền bắc. Nếu muốn đọc số "7565675607" theo chuẩn là " Bảy tỷ, năm trăm sáu mươi lăm triệu, sáu trăm bảy mươi lăm nghìn, sáu trăm linh bảy".@vc_đi chơi Bạn nhập thêm đối số snSoutherners() là dành cho đọc theo miền nam như lẻ, lăm, ngàn. Tệp trước là phiên bản cũ. Bạn nên tải lại tệp mới.

Tạm thời bạn vào nhấn Alt+F11Em miền bắc. Nếu muốn đọc số "7565675607" theo chuẩn là " Bảy tỷ, năm trăm sáu mươi lăm triệu, sáu trăm bảy mươi lăm nghìn, sáu trăm linh bảy".
Nếu sử dụng =SpellNumVN() cho ra kết quả "Bảy tỷ, năm trăm sáu mươi nhăm triệu, sáu trăm bảy mươi nhăm nghìn, sáu trăm linh bảy" (như hình dưới), có thể sửa phần nào trong code bác, em tìm để thay thế "nh"&ChrW$(259)&"m" bằng "l"&ChrW$(259)&"m" trong code nhưng không được.View attachment 308517
"nh" & ChrW(259) & "m"
"l" & ChrW(259) & "m"





Được rồi, cảm ơn bạn nhé!Tạm thời bạn vào nhấn Alt+F11
Sau thì Control + F;
Chọn thay thế cụmbằng cụmMã:"nh" & ChrW(259) & "m"Nhớ chọn Current ProjectMã:"l" & ChrW(259) & "m"
View attachment 308526
mình mở file xem thử thì bị lỗi này. win10 và office 365 64bit*****CẬP NHẬT: 19/07/2024 *****
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:
- Các kiểu trả kết quả hoa thường tùy chọn
- Tùy chọn đọc hoặc không đọc "không trăm"
- Tùy chọn thay thế số đã đọc hoặc thêm vào sau số đó.
- Đọc các số riêng lẻ trong chuỗi chứa số, hoặc trích xuất số và đọc
- 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,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.
- 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.
- 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
- 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ốsnDotPercent() Đọc là chấm thay cho phẩy snSpellDivision() Đọc phép chia tiêu chuẩn của 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 snSoutherners() Đọc ngàn, lẻ, lăm
(***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
