[góc chia sẻ] (gg sheet & excel 365) Hàm chuyển tiền thành chữ

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài
Tôi viết hóa đơn có tổng tiền hóa đơn, tôi tính tổng 1 báo cáo, nếu kết quả chỉ ra 1 và 0 thì tôi thêm vào cái gì? Thêm vào để ra báo cáo sai á hả?
Hóa đơn sai là ở tù, báo cáo sai là bị đuổi. Làm như chuyện đùa của con nít.
như em đã nói ở trên, nếu số chỉ có 1 và 0, thì hàm nó tự chuyển theo định dạng cần thiết để cho ra kết quả (việc chỉ hiển thị 1 và 0 khi anh gõ vào và hiển thị ra bản chất nó ko phải là số, nó là nhị phân), nhưng khi số quá dài thì excel tự động làm tròn hàng đơn vị, (cái này em ko biết sửa).
  • Cái số anh nhìn vào nó là nhị phân (excel ko làm tròn số nhị phân)
  • Cái số hàm xử lý là số thực (bị excel làm tròn)
  • Anh thử định dạng number rồi gõ số dài ngoằn như vậy vào xem, nó tự động làm tròn hàng đơn vị luôn. Hàm ko thấy số nên nó ko xử lý được thôi anh.
Nếu anh có xem kỹ cách em làm thì em tách từng số ra vlookup với 1 cái bảng cho trước để cho ra chữ số. cho nên số nào nó ra chữ nấy, ko trật đc.
Vấn đề nằm ở định dạng ô ban đầu. định dạng ô đúng thì hàm sẽ chạy ra đúng.
Thêm nữa, trường hợp anh đưa ra rất ít khi gặp
1. vì số quá lớn, 1triệu tỷ
2. số chỉ có 1 và 0
nên trong trường hợp cực kỳ hiếm này cần phải để ý kỹ hơn đến kết quả thôi.
Em đã từng test rất nhiều công thức khác của các anh em đi trươc. Ko có công thức nào đếm được tới Triệu Tỷ cả. Em cũng phải kiểm tra kết quả khi gặp trường hợp đặc biệt như thế này thôi.
 
Đang rảnh nên góp vui chút hàm 365 đọc số thành chữ không giới hạn độ dài (kết quả tạm ổn), text hay number đều được
Mã:
=LET(
tbl_1,{"","một","hai","ba","bốn","năm","sáu","bảy","tám","chín"},
tbl_2,{0,1,2,3,4,5,6,7,8,9},
tbl_3,{"triệu";"ngàn";""},
fnc_1,LAMBDA(arr,LET(
       tbl_2,MAP(ROW($1:$3),LAMBDA(e,
                       IF(e=1,IF(INDEX(arr,e)="","",INDEX(arr,e)&" trăm"),
                       IF(e=2,IF(INDEX(arr,e)="",IF(OR(INDEX(arr,e-1)="",INDEX(arr,e+1)=""),"","lẻ"),IF(INDEX(arr,e)="một","mười",INDEX(arr,e)&" mươi")),
                       INDEX(arr,e))))),
        TEXTJOIN(" ",,tbl_2))),
fnc_split,LAMBDA(t,LET(arr_split,MID(t,SEQUENCE(LEN(t)),1),
        INDEX(tbl_1,MATCH(--arr_split,tbl_2,0)))),
fnc_vndc9,LAMBDA(txt_ip,LET(
        txt,REPT(0,9-LEN(txt_ip))&txt_ip,
        txt_split,MID(txt,SEQUENCE(3,,0)*3+1,3),
        arr_res,MAP(txt_split,LAMBDA(t,fnc_1(fnc_split(t)))),
        TEXTJOIN(", ",,FILTER(arr_res&" "&tbl_3,txt_split<>"000")))),
fnc_vnd_full,LAMBDA(txt_ip0,LET(
        n,INT((LEN(txt_ip0)-1)/9)+1,
        txt0,REPT(0,n*9-LEN(txt_ip0))&txt_ip0,
        txt_splitc9,MID(txt0,SEQUENCE(n,,0)*9+1,9),
        arr_ty,MAP(SEQUENCE(n),LAMBDA(e,IF(e<n," tỷ"," "))),
        txt_res1,SUBSTITUTE(TRIM(TEXTJOIN(", ",,IFERROR(MAP(txt_splitc9,LAMBDA(e,fnc_vndc9(e))),"")&arr_ty)& " đồng"),", đồng"," đồng"),
        UPPER(LEFT(txt_res1))&MID(txt_res1,2,LEN(txt_res1)))),
fnc_vnd_full(A1))
 

File đính kèm

  • Doc so thanh chu.xlsx
    37.1 KB · Đọc: 4
Bây h mình mới xem hàm của bạn, đúng thật là có chạy tới triệu tỷ, nhưng vấn đề đặt ra là excel làm tròn hàng đơn vị nếu như người dùng nhập hàng đơn vị vào số triệu tỷ. Về cách thức hàm của bạn cũng tách 3 số ra để dò giống mình nên cơ chế nó cũng như nhau.
Bài đã được tự động gộp:

Đang rảnh nên góp vui chút hàm 365 đọc số thành chữ không giới hạn độ dài (kết quả tạm ổn), text hay number đều được
Mã:
=LET(
tbl_1,{"","một","hai","ba","bốn","năm","sáu","bảy","tám","chín"},
tbl_2,{0,1,2,3,4,5,6,7,8,9},
tbl_3,{"triệu";"ngàn";""},
fnc_1,LAMBDA(arr,LET(
       tbl_2,MAP(ROW($1:$3),LAMBDA(e,
                       IF(e=1,IF(INDEX(arr,e)="","",INDEX(arr,e)&" trăm"),
                       IF(e=2,IF(INDEX(arr,e)="",IF(OR(INDEX(arr,e-1)="",INDEX(arr,e+1)=""),"","lẻ"),IF(INDEX(arr,e)="một","mười",INDEX(arr,e)&" mươi")),
                       INDEX(arr,e))))),
        TEXTJOIN(" ",,tbl_2))),
fnc_split,LAMBDA(t,LET(arr_split,MID(t,SEQUENCE(LEN(t)),1),
        INDEX(tbl_1,MATCH(--arr_split,tbl_2,0)))),
fnc_vndc9,LAMBDA(txt_ip,LET(
        txt,REPT(0,9-LEN(txt_ip))&txt_ip,
        txt_split,MID(txt,SEQUENCE(3,,0)*3+1,3),
        arr_res,MAP(txt_split,LAMBDA(t,fnc_1(fnc_split(t)))),
        TEXTJOIN(", ",,FILTER(arr_res&" "&tbl_3,txt_split<>"000")))),
fnc_vnd_full,LAMBDA(txt_ip0,LET(
        n,INT((LEN(txt_ip0)-1)/9)+1,
        txt0,REPT(0,n*9-LEN(txt_ip0))&txt_ip0,
        txt_splitc9,MID(txt0,SEQUENCE(n,,0)*9+1,9),
        arr_ty,MAP(SEQUENCE(n),LAMBDA(e,IF(e<n," tỷ"," "))),
        txt_res1,SUBSTITUTE(TRIM(TEXTJOIN(", ",,IFERROR(MAP(txt_splitc9,LAMBDA(e,fnc_vndc9(e))),"")&arr_ty)& " đồng"),", đồng"," đồng"),
        UPPER(LEFT(txt_res1))&MID(txt_res1,2,LEN(txt_res1)))),
fnc_vnd_full(A1))
khá là hay đấy, tạm ổn là sao bạn.
Hàm của bạn mà đưa lên google sheet chạy dc luôn thì lợi hại hơn mình r
 
Lần chỉnh sửa cuối:
"tạm ổn" tức là là người ta viết nhẹ nhàng khiêm tốn. :)

----
Cỡ triệu tỉ mà sai số thì phăng teo mạng luôn á.
 
Bây h mình mới xem hàm của bạn, đúng thật là có chạy tới triệu tỷ, nhưng vấn đề đặt ra là excel làm tròn hàng đơn vị nếu như người dùng nhập hàng đơn vị vào số triệu tỷ. Về cách thức hàm của bạn cũng tách 3 số ra để dò giống mình nên cơ chế nó cũng như nhau.
Bài đã được tự động gộp:


khá là hay đấy, tạm ổn là sao bạn.
Hàm của bạn mà đưa lên google sheet chạy dc luôn thì lợi hại hơn mình r
Với tôi kết quả nó chỉ tạm ổn thôi
GG sheet nhiều hàm nó phát triển dựa trên hàm Excel nhưng không đa dạng như excel, chỉnh lại chút là được, bạn xem link file GG sheet
 
Hình như phải sửa chút từ "mốt" và "lăm" nữa các bác ạ.
 
như em đã nói ở trên, nếu số chỉ có 1 và 0, thì hàm nó tự chuyển theo định dạng cần thiết để cho ra kết quả (việc chỉ hiển thị 1 và 0 khi anh gõ vào và hiển thị ra bản chất nó ko phải là số, nó là nhị phân), nhưng khi số quá dài thì excel tự động làm tròn hàng đơn vị, (cái này em ko biết sửa).
  • Cái số anh nhìn vào nó là nhị phân (excel ko làm tròn số nhị phân)
  • Cái số hàm xử lý là số thực (bị excel làm tròn)
  • Anh thử định dạng number rồi gõ số dài ngoằn như vậy vào xem, nó tự động làm tròn hàng đơn vị luôn. Hàm ko thấy số nên nó ko xử lý được thôi anh.
Nếu anh có xem kỹ cách em làm thì em tách từng số ra vlookup với 1 cái bảng cho trước để cho ra chữ số. cho nên số nào nó ra chữ nấy, ko trật đc.
Vấn đề nằm ở định dạng ô ban đầu. định dạng ô đúng thì hàm sẽ chạy ra đúng.
Thêm nữa, trường hợp anh đưa ra rất ít khi gặp
1. vì số quá lớn, 1triệu tỷ
2. số chỉ có 1 và 0
nên trong trường hợp cực kỳ hiếm này cần phải để ý kỹ hơn đến kết quả thôi.
Em đã từng test rất nhiều công thức khác của các anh em đi trươc. Ko có công thức nào đếm được tới Triệu Tỷ cả. Em cũng phải kiểm tra kết quả khi gặp trường hợp đặc biệt như thế này thôi.
Tôi nhắc lại là tôi chỉ quan tâm đến đúng và sai. Tôi không cần biết nhị phân hay không nhị phân, định dạng hay không định dạng. Tôi cũng không cần biết bạn tách số kiểu gì, lookup kiểu nào.
- Một trường hợp sai nhìn thấy (và cả những trường hợp chưa nhìn thấy), là cái sai phải sửa. Nói thêm là tôi nhìn thấy chứ tôi không tự nghĩ mà đưa ra
- Cái sai phải sửa mà "ko biết sửa", không sửa, thì hàm không có giá trị sử dụng
-Hàm không có giá trị sử dụng mà mang tiếng chia sẻ thì cái chia sẻ đó vô giá trị.
Tôi có thể thông báo rằng chủ đề chia sẻ này vô giá trị, và khuyến cáo mọi người đừng đem về dùng.
 
Bây h mình mới xem hàm của bạn, đúng thật là có chạy tới triệu tỷ, nhưng vấn đề đặt ra là excel làm tròn hàng đơn vị nếu như người dùng nhập hàng đơn vị vào số triệu tỷ. Về cách thức hàm của bạn cũng tách 3 số ra để dò giống mình nên cơ chế nó cũng như nhau.
Như bạn thấy, cái hàm củ chuối của mình vẫn đọc được số lẻ hàng đơn vị của số có 22 chữ số. Nên không thể nói cơ chế như nhau được.
Thực ra mình tách đến từng chữ số một, cụ thể hàm mid mình chỉ lấy 1 chữ số, tuy nhiên mình chia làm 3 cột để đọc từng bộ 3 số, nên không bị giới hạn về độ dài của số.
Cái hàm ban đầu mình chỉ làm cho 15 số, còn hơn nữa chưa test hết nên sẽ có sai. Nhưng tùy biến và chỉnh sửa sẽ dễ hơn cái bạn đang làm. Mình tin là nếu dùng hàm let, sẽ rút gọn hơn nữa nhưng thực sự mình chưa rành hàm này nên chưa làm.
 
...
- Cái sai phải sửa mà "ko biết sửa", không sửa, thì hàm không có giá trị sử dụng
...
Bất cứ cái gì không thể triệt được chỗ sai thì khong có giá trị sử dụng. Trừ phi có khuyến cáo cho người dùng rằng "hàm không bảo đảm kết quả khi gặp trong trường hợp ..."
Tuy nhiên, nếu tôi bí quá, cần phải tung cho người dùng một sản phẩm dở dang thì tôi sẽ đặt thêm trường hợp sai thì cho kết quả "Cảnh báo! Hàm không đọc được dữ liệu này"

Tuy nhiên, theo nhận xét thì thớt quá chủ quan khi tung lên thành "chia sẻ". Đáng lẽ phải khiêm nhường hơn, đưa lên và nhờ người khác test giùm.

Chú thích:
Thớt chưa rành về "số" trong máy tính cho nên lý luận như vậy.
Excel chắc chắn làm tròn số nhị phân . Bởi vì nó chứa số thực (Double) theo dạng nhị phân.
Double có 16 bytes, tức 64 bít. Tiêu chuẩn chứa số cho phép dùng 53 bít để chứa chữ số, cho nên chỉ có thể chứa đến 15 chữ số. 11 bít còn lại dùng để chứa lũy thừa (^10).
Excel mặc định số là Double. VBA mới cho chọn Byte, Int, Long Single, hay Double.
Kiểu Single chỉ chính xác tới 8 chữ số. Bởi vậy mới có từ Single (single precision) và Double (double precision). Double đơn giản có nghĩa là tăng đôi đọ chính xác lên.
Có dạng số Decimal chứa được giá trị chính xác đến 28 chữ số. Nhưng chỉ dùng được trong VBA và cũng hơi khó khai báo.
 
Tôi nhắc lại là tôi chỉ quan tâm đến đúng và sai. Tôi không cần biết nhị phân hay không nhị phân, định dạng hay không định dạng. Tôi cũng không cần biết bạn tách số kiểu gì, lookup kiểu nào.
- Một trường hợp sai nhìn thấy (và cả những trường hợp chưa nhìn thấy), là cái sai phải sửa. Nói thêm là tôi nhìn thấy chứ tôi không tự nghĩ mà đưa ra
- Cái sai phải sửa mà "ko biết sửa", không sửa, thì hàm không có giá trị sử dụng
-Hàm không có giá trị sử dụng mà mang tiếng chia sẻ thì cái chia sẻ đó vô giá trị.
Tôi có thể thông báo rằng chủ đề chia sẻ này vô giá trị, và khuyến cáo mọi người đừng đem về dùng.
nghe BQT mà nói vậy thì cũng hơi buồn, nhưng mà thôi kệ.
Mình thông tin lại cho các bạn theo dõi khác thông tin mình rút ra đc như sau:
.
số mà BQT báo lỗi là số "một triệu tỷ đồng" = 16 con số
các số dưới 16 số vẫn hoạt động bình thường.
lỗi tìm ra là vì excel ko thể xử lý số quá 15 chữ số (như bạn Vetmini đã giải thích, cái này mình ko biết thiệt)
Cách giải quyết là sử dụng thuật toán không liên quan đến định dạng số, format text rồi mới xử lý.
.
Về tiêu đề chia sẻ, mình muốn chia sẻ thuật toán viết nên cái hàm này một cách trực quan để "những người khác" nhìn vào dễ hiểu hơn, dễ làm theo. Và truyền cảm hứng học tập cho các bạn khác.
Và cũng như luyện tập và cập nhật thông tin hữu ích cho bản thân. Mình gọi đó là chia sẻ.
.
Còn khái niệm về chia sẻ của BQT là mọi thứ chia sẻ phải hoạt động ở mọi tình huống, không có giới hạn thì mới đáng để chia sẻ thì sẽ ko có bài đăng nào như thế này cả.
Nhờ vào bài này mình biết đc 1 hàm khác của bạn excel_lv1.5 đã chia sẻ khá là hay, không giới hạn ký tự. Mình sẽ lưu lại và nghiên cứu.
Nhờ vào bài này mình biết đc thông tin mà bạn Vetmini đã chia sẻ.
Nhờ vào bài này mình biết đc 1 anh BQT ko quan tâm tới gì ngoài kết quả cuối cùng.
.
Mình thấy hàm của mình nó chạy tốt khi dưới 16 chữ số.
Trong bài viết này cũng có rất nhiều người chia sẻ hàm chuyển tiền thành chữ rất hay, hoạt động trên cả 2 nền tảng. Không nhờ bài viết này có lẽ mình ko nghĩ nó có tồn tại nữa.
.
Rất cám ơn các bạn đã hỗ trợ mình.
đặc biệt là 2 bạn excel_lv1.5Vetmini đã cung cấp các thông tin hữu ích của mình.
cám ơn các bạn khác hỗ trợ mình sửa lỗi vặt trong cái hàm này.
Rất cám ơn các bạn nhiệt tình!


1681202117049.png
 

File đính kèm

  • 1681200514378.png
    1681200514378.png
    38.4 KB · Đọc: 2
  • 1681202890397.png
    1681202890397.png
    44.9 KB · Đọc: 2
Bất cứ cái gì không thể triệt được chỗ sai thì khong có giá trị sử dụng. Trừ phi có khuyến cáo cho người dùng rằng "hàm không bảo đảm kết quả khi gặp trong trường hợp ..."
Tuy nhiên, nếu tôi bí quá, cần phải tung cho người dùng một sản phẩm dở dang thì tôi sẽ đặt thêm trường hợp sai thì cho kết quả "Cảnh báo! Hàm không đọc được dữ liệu này"
Đã không khuyến cáo lại còn xúi thêm 1 số bất kỳ khác 0 và 1 vào.
Báo cáo 1,000,010,101,001,001 sai thì cứ thêm số 2 hoặc số bất kỳ vào (chắc là chỗ nào cũng được). Rồi xách lên nộp cho kiểm toán nhỉ?
số mà BQT báo lỗi là số "một triệu tỷ đồng" = 16 con số
số mà BQT báo lỗi là số "một triệu tỷ đồng" = 16 con số ...
Còn khái niệm về chia sẻ của BQT là mọi thứ chia sẻ phải hoạt động ở mọi tình huống, không có giới hạn thì mới đáng để chia sẻ thì sẽ ko có bài đăng nào như thế này cả.
Tôi nhận xét sai trên cương vị người dùng, chứ không trên cương vị BQT. Cái sai rành rành trước mắt thì phải nói.
Tôi lại còn quan niệm rằng phải hoàn thiện mới chia sẻ, thấy sai thì phải sửa, còn chưa chắc hoàn thiện thì chỉ làm như anh VetMini nói:
"Cảnh báo! Hàm không đọc được dữ liệu này"
Đáng lẽ phải khiêm nhường hơn, đưa lên và nhờ người khác test giùm.
Thứ 2: Nếu tôi là người dùng mà bị sai, tôi phải cảnh báo cho những người dùng khác, dù có phải là BQT hay không.
 
Lần chỉnh sửa cuối:
1681204992557.png

1681204951948.png

1681204981744.png

1681204967430.png


Thế này gọi là cố tình bóp lệch sự thật á.
Bài đầu mình nêu 'chia sẻ' làm việc được con số có 21 chữ số.
Có người chỉ ra có chỗ sai ở số có hơn 15 chữ số.
Một hồi lâu thì chấp nhận cái sai nhưng lại bóp méo quan điểm chia sẻ.
Trọng tâm ở đây là mình viết cái gì phải thống nhất từ đầu tới cuối.
======================> Sửa bài đầu thành áp dụng với con số có dưới 16 chữ số đi là được.
 
Đã không khuyến cáo lại còn xúi thêm 1 số bất kỳ khác 0 và 1 vào.
Báo cáo 1,000,010,101,001,001 sai thì cứ thêm số 2 hoặc số bất kỳ vào (chắc là chỗ nào cũng được). Rồi xách lên nộp cho kiểm toán nhỉ?
hàm chưa xog, chưa thể đặt khuyến cáo trong hàm trừ khi không thể nào sửa lỗi được nữa.
Việc em thêm số khác 1 và 0 vào để chứng mình vì lỗi số ban đầu là số nhị phân nên nó lỗi. Em đã nhận là hàm sai và fix trong hàm ngay sau đó.
Còn cái số quá 16 ký tự nó mất hàng đơn vị thì ko sửa đc, sẽ thêm cảnh báo vô hàm thôi.
Nhưng mà có vẻ anh thích bắt bẻ em hơn là giúp em sửa hàm.
Bài đã được tự động gộp:

View attachment 288791

View attachment 288788

View attachment 288790

View attachment 288789


Thế này gọi là cố tình bóp lệch sự thật á.
Bài đầu mình nêu 'chia sẻ' làm việc được con số có 21 chữ số.
Có người chỉ ra có chỗ sai ở số có hơn 15 chữ số.
Một hồi lâu thì chấp nhận cái sai nhưng lại bóp méo quan điểm chia sẻ.
Trọng tâm ở đây là mình viết cái gì phải thống nhất từ đầu tới cuối.
======================> Sửa bài đầu thành áp dụng với con số có dưới 16 chữ số đi là được.
ban đầu mình nghĩ nếu làm theo cách này nó sẽ ko lỗi, nên viết bài như vậy, nhưng sau này biết ko sửa đc thì mình đâu sửa bài lại đc nữa đâu.
Hồi mới đăng đâu có ai nói cho mình giới hạn của thuật toán này để mình sửa bài lại đâu.
À có bạn Vetmini có nhắc đến chuyện này mà mình đọc ko hiểu lúc đó.
 
Lần chỉnh sửa cuối:
Nhưng mà có vẻ anh thích bắt bẻ em hơn là giúp em sửa hàm.
Tôi nhắc lại là tôi đứng trên cương vị người dùng. Nếu sai không sửa thì tôi phải cảnh báo cho những người dùng khác, không cần phải là BQT.
Vả lại tôi sửa làm gì nếu có những hàm khác dùng được, chưa thấy sai?
 
nghe BQT mà nói vậy thì cũng hơi buồn, nhưng mà thôi kệ.
...
Bạn không nên dùng từ BQT như vậy.
Ở đây ai cũng hiểu là bạn kia góp ý "theo quan điểm của bất cứ thành viên nào khác".
Và bạn ấy không hề có ý "đại diện BQT".

Nên biết rõ rằng thành viên BQT chỉ đại diện BQT khi cần khuyến cáo về kỷ luật (vi phạm luật diễn đàn).
 
Tự ái vậy là dở rồi. Nên nhớ ngoài phạm vi thì phải báo lỗi chứ không phải trả về kết quả sai.
Và một khi đã công bố thì phải chuẩn nhất có thể chứ không nên sửa đi sửa lại năm lần bảy lượt như thế.
 
Tôi nhắc lại là tôi đứng trên cương vị người dùng. Nếu sai không sửa thì tôi phải cảnh báo cho những người dùng khác, không cần phải là BQT.
Vả lại tôi sửa làm gì nếu có những hàm khác dùng được, chưa thấy sai?
à, làm em tường thành viên BQT thiệt. Nếu ko từng trải hàm thì làm sao biết hàm nó sai đc.
Bạn không nên dùng từ BQT như vậy.
Ở đây ai cũng hiểu là bạn kia góp ý "theo quan điểm của bất cứ thành viên nào khác".
Và bạn ấy không hề có ý "đại diện BQT".

Nên biết rõ rằng thành viên BQT chỉ đại diện BQT khi cần khuyến cáo về kỷ luật (vi phạm luật diễn đàn).
cái này mới biết.
Tự ái vậy là dở rồi. Nên nhớ ngoài phạm vi thì phải báo lỗi chứ không phải trả về kết quả sai.
Và một khi đã công bố thì phải chuẩn nhất có thể chứ không nên sửa đi sửa lại năm lần bảy lượt như thế.
ok bạn, đã rút kinh nghiệm
 
Đang rảnh nên góp vui chút hàm 365 đọc số thành chữ không giới hạn độ dài (kết quả tạm ổn), text hay number đều được
Mình cũng góp vui chút dùng hàm Let để đọc số, mong sự góp ý từ bạn.

Mã:
=LET(doc_so,
    TRIM(TEXTJOIN(", ",,
        LET(l,SEQUENCE(ROUNDUP(LEN(A2)/3,0),,1,3),m,MOD(2*LEN(A2),3),
            tr,--MID(A2,l-m,1),ch,--MID(A2,l-m+1,1),dv,--MID(A2,l-m+2,1),
            chuso,{"không ","một ","hai ","ba ","bốn ","năm ","sáu ","bảy ","tám ","chín "},
            doc_tr,IFERROR(IF(tr+ch+dv>0,INDEX(chuso,tr+1)&"trăm ",""),""),
            doc_ch,IFERROR(IF(ch+dv>0,IF(ch=0,"lẻ ",IF(ch=1,"mười ",INDEX(chuso,ch+1)&"mươi ")),""),""),
            doc_dv,IF(dv>0,IF(dv=1,IF(IFERROR(ch,0)>1,"mốt ","một "),IF(IFERROR(dv,0)=5,IF(IFERROR(ch,0)=0,"năm ","lăm "),INDEX(chuso,dv+1))),""),
            doc_hang,IF(IFERROR(tr,0)+IFERROR(ch,0)+dv>0,INDEX({"","ngàn","triệu"},MOD((MAX(l)-l)/3,3)+1),""),
            doc_ty,IF(MOD(MAX(l)-l,9)=0,REPT(" tỷ",(MAX(l)-l)/9),""),
        doc_tr&doc_ch&doc_dv&doc_hang&doc_ty))),
    SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(doc_so,LEFT(doc_so),UPPER(LEFT(doc_so)),1),"tỷ, tỷ","tỷ"),", tỷ"," tỷ"))&" đồng."
1681290435758.png
 

File đính kèm

  • đọc số hàm Let.xlsx
    20.6 KB · Đọc: 8
Web KT
Back
Top Bottom