[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
Có thiện chí, nhưng đi sai đường.
Em đang định tính thử tài sản của lão Musk đổi ra tờ 1 ZWD rồi cuộn tròn liên tiếp lại xem được bao nhiêu nanomet
Không những sai đường mà lại còn sai toán lý hóa các loại. Có biết 1 nanomet so với 1 mét lớn cỡ nào không?
Với lại làm gì có loại tiền ZWD, chỉ có APD thôi (dollar âm phủ), bảo đảm đo bằng megamet, gigamet, tetramet trở lên.
 
Sau khi share bài lên các group fb thì mình nhận ra là thuật toán mình làm ở bài trên nó vẫn bị lỗi và không thể sửa đc
Nên mình viết lại thuật toán mới, ưu điểm phiên bản này là dễ sửa lỗi hơn.
1680927424117.png
Sau bước 4 là dùng textjoin nối chuỗi lại với nhau và dùng SUBSTITUTE để xóa các trường hợp lỗi chữ thôi
Full hàm:

=LET(money;TEXT(B49;REPT(0;21));haichin;VSTACK("hai";"ba";"bốn";"năm";"sáu";"bảy";"tám";"chín");bangv;HSTACK(TEXT(SEQUENCE(10;1;0);"@");VSTACK("không";"một";haichin)&" trăm";SUBSTITUTE(SUBSTITUTE(VSTACK("lẻ";"mười";haichin)&" mươi";"lẻ mươi";"lẻ");"mười mươi";"mười");VSTACK("";"một";haichin));bonso;MID(money;SEQUENCE(4;1;10;3);3);baso;MID(money;SEQUENCE(3;1;1;3);3);tn;VSTACK(" tỷ, ";" triệu, ";" nghìn, ");ttn;VSTACK(" tỷ, ";" triệu, ";" nghìn, ";"");tex;TRIM(TEXTJOIN(;TRUE;IF(baso="000";"";VLOOKUP(MID(baso;1;1);bangv;1+1;FALSE)&" "&VLOOKUP(MID(baso;2;1);bangv;2+1;FALSE)&" "&VLOOKUP(MID(baso;3;1);bangv;3+1;FALSE)&tn);IF((INDEX(bonso;1)<>"000")+(SUM(baso*1)=0);"";" tỷ, "))&TEXTJOIN(;TRUE;IF(bonso="000";"";VLOOKUP(MID(bonso;1;1);bangv;1+1;FALSE)&" "&VLOOKUP(MID(bonso;2;1);bangv;2+1;FALSE)&" "&VLOOKUP(MID(bonso;3;1);bangv;3+1;FALSE)&ttn);" đồng"));viet_hoa;SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(LEFT(tex;LEN("không trăm lẻ "))="không trăm lẻ ";SUBSTITUTE(tex;"không trăm lẻ ";"";1);IF(LEFT(tex;LEN("không trăm "))="không trăm ";SUBSTITUTE(tex;"không trăm ";"";1);IF(LEFT(tex;LEN("lẻ nghìn, "))="lẻ nghìn, ";SUBSTITUTE(tex;"lẻ nghìn, ";"";1);tex)));"lẻ triệu, ";"triệu, ");"lẻ nghìn, ";"nghìn, ");"lẻ đồng";" đồng");"mươi năm";"mươi lăm");"mươi một";"mươi mốt");"lẻ tỷ, ";"tỷ, ");"nghìn, tỷ, ";"nghìn tỷ, ");"triệu, tỷ, ";"triệu tỷ, ");", đồng";" đồng");TRIM(SUBSTITUTE(viet_hoa;LEFT(viet_hoa);UPPER(LEFT(viet_hoa));1)))

1680929496243.png
 

File đính kèm

  • Tiền thành chữ VN.xlsx
    18 KB · Đọc: 13
Lần chỉnh sửa cuối:
Thử thì phải thử mấy cái số độc độc kiểu 1000010101001001, chứ thử mấy cái số bình thường thì sao bẫy hết lỗi.
À lỗi thiệt, đổi số 1 bên phải thành số 0 thì nó lại chạy bt
Bài đã được tự động gộp:

Thử thì phải thử mấy cái số độc độc kiểu 1000010101001001, chứ thử mấy cái số bình thường thì sao bẫy hết lỗi.
đã tìm ra lỗi, khi bạn bấm con số đặc biệt này vào thì excel nó nhận dạng là số nhị phân, ko phải số thực, cho nên hàm sẽ tính toán lỗi, lấy ô nhị phân đó *1 là hết lỗi
1680934137193.png
 
Lần chỉnh sửa cuối:
Sơ sơ với file ở #22
1681118355580.png
 
Thử lại vs hàm này:

Mã:
=LET(money;TEXT(B49*1;REPT(0;21));haichin;VSTACK("hai";"ba";"bốn";"năm";"sáu";"bảy";"tám";"chín");bangv;HSTACK(TEXT(SEQUENCE(10;1;0);"@");VSTACK("không";"một";haichin)&" trăm";SUBSTITUTE(SUBSTITUTE(VSTACK("lẻ";"mười";haichin)&" mươi";"lẻ mươi";"lẻ");"mười mươi";"mười");VSTACK("";"một";haichin));bonso;MID(money;SEQUENCE(4;1;10;3);3);baso;MID(money;SEQUENCE(3;1;1;3);3);tn;VSTACK(" tỷ, ";" triệu, ";" nghìn, ");ttn;VSTACK(" tỷ, ";" triệu, ";" nghìn, ";"");tex;TRIM(TEXTJOIN(;TRUE;IF(baso="000";"";VLOOKUP(MID(baso;1;1);bangv;1+1;FALSE)&" "&VLOOKUP(MID(baso;2;1);bangv;2+1;FALSE)&" "&VLOOKUP(MID(baso;3;1);bangv;3+1;FALSE)&tn);IF((INDEX(bonso;1)<>"000")+(SUM(baso*1)=0);"";" tỷ, "))&TEXTJOIN(;TRUE;IF(bonso="000";"";VLOOKUP(MID(bonso;1;1);bangv;1+1;FALSE)&" "&VLOOKUP(MID(bonso;2;1);bangv;2+1;FALSE)&" "&VLOOKUP(MID(bonso;3;1);bangv;3+1;FALSE)&ttn);" đồng"));viet_hoa;SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(LEFT(tex;LEN("không trăm lẻ "))="không trăm lẻ ";SUBSTITUTE(tex;"không trăm lẻ ";"";1);IF(LEFT(tex;LEN("không trăm "))="không trăm ";SUBSTITUTE(tex;"không trăm ";"";1);IF(LEFT(tex;LEN("lẻ nghìn, "))="lẻ nghìn, ";SUBSTITUTE(tex;"lẻ nghìn, ";"";1);tex)));"lẻ triệu, ";"triệu, ");"lẻ nghìn, ";"nghìn, ");"lẻ đồng";" đồng");"mươi năm";"mươi lăm");"mươi một";"mươi mốt");"lẻ tỷ, ";"tỷ, ");"nghìn, tỷ, ";"nghìn tỷ, ");"triệu, tỷ, ";"triệu tỷ, ");", đồng";" đồng");TRIM(SUBSTITUTE(viet_hoa;LEFT(viet_hoa);UPPER(LEFT(viet_hoa));1))) đồng");TRIM(SUBSTITUTE(viet_hoa;LEFT(viet_hoa);UPPER(LEFT(viet_hoa));1)))
 
Lần chỉnh sửa cuối:
Thử để vào đây xem sao.
Mã:
=LET(money;TEXT(B49*1;REPT(0;21));haichin;VSTACK("hai";"ba";"bốn";"năm";"sáu";"bảy";"tám";"chín");bangv;HSTACK(TEXT(SEQUENCE(10;1;0);"@");VSTACK("không";"một";haichin)&" trăm";SUBSTITUTE(SUBSTITUTE(VSTACK("lẻ";"mười";haichin)&" mươi";"lẻ mươi";"lẻ");"mười mươi";"mười");VSTACK("";"một";haichin));bonso;MID(money;SEQUENCE(4;1;10;3);3);baso;MID(money;SEQUENCE(3;1;1;3);3);tn;VSTACK(" tỷ, ";" triệu, ";" nghìn, ");ttn;VSTACK(" tỷ, ";" triệu, ";" nghìn, ";"");tex;TRIM(TEXTJOIN(;TRUE;IF(baso="000";"";VLOOKUP(MID(baso;1;1);bangv;1+1;FALSE)&" "&VLOOKUP(MID(baso;2;1);bangv;2+1;FALSE)&" "&VLOOKUP(MID(baso;3;1);bangv;3+1;FALSE)&tn);IF((INDEX(bonso;1)<>"000")+(SUM(baso*1)=0);"";" tỷ, "))&TEXTJOIN(;TRUE;IF(bonso="000";"";VLOOKUP(MID(bonso;1;1);bangv;1+1;FALSE)&" "&VLOOKUP(MID(bonso;2;1);bangv;2+1;FALSE)&" "&VLOOKUP(MID(bonso;3;1);bangv;3+1;FALSE)&ttn);" đồng"));viet_hoa;SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(LEFT(tex;LEN("không trăm lẻ "))="không trăm lẻ ";SUBSTITUTE(tex;"không trăm lẻ ";"";1);IF(LEFT(tex;LEN("không trăm "))="không trăm ";SUBSTITUTE(tex;"không trăm ";"";1);IF(LEFT(tex;LEN("lẻ nghìn, "))="lẻ nghìn, ";SUBSTITUTE(tex;"lẻ nghìn, ";"";1);tex)));"lẻ triệu, ";"triệu, ");"lẻ nghìn, ";"nghìn, ");"lẻ đồng";" đồng");"mươi năm";"mươi lăm");"mươi một";"mươi mốt");"lẻ tỷ, ";"tỷ, ");"nghìn, tỷ, ";"nghìn tỷ, ");"triệu, tỷ, ";"triệu tỷ, ");", đồng";" đồng");TRIM(SUBSTITUTE(viet_hoa;LEFT(viet_hoa);UPPER(LEFT(viet_hoa));1))) đồng");TRIM(SUBSTITUTE(viet_hoa;LEFT(viet_hoa);UPPER(LEFT(viet_hoa));1)))
 
Tại hạ xin bái phục!!!
Nhưng khẳng định lại là Office 2021 không dùng được. Hy vọng các bạn có thể update cho Office 2003 đến 2021 với. Dân ta còn nghèo, còn rất nhiều người chưa tiếp cận được 3 chai 65.
Bài đã được tự động gộp:


 
Tại hạ xin bái phục!!!
Nhưng khẳng định lại là Office 2021 không dùng được. Hy vọng các bạn có thể update cho Office 2003 đến 2021 với. Dân ta còn nghèo, còn rất nhiều người chưa tiếp cận được 3 chai 65.
Bài đã được tự động gộp:
Hình như bạn ko biết là Google sheets miễn phí sử dụng đúng k
 
Hình như bạn ko biết là Google sheets miễn phí sử dụng đúng k
Cái này thì mình biết, nhưng dùng không quen so với Office. Trừ khi bị cấm dùng Office hoặc Microsoft phá sản, hoặc tất cả mọi người cùng chuyển sang thì may ra.
 
Cái này thì mình biết, nhưng dùng không quen so với Office. Trừ khi bị cấm dùng Office hoặc Microsoft phá sản, hoặc tất cả mọi người cùng chuyển sang thì may ra.
Rảnh rỗi thì bạn cứ sd thử xem, trước mình cũng chê như bạn đấy, nhưng dùng rồi thì ghiền.
Thứ 1 về tính tiện lợi, nó chạy trên nền web, hàm đc cập nhật liên tục, nên trừ khi bạn ko vô mạng dc thì những tính năng miễn phí của nó cũng quá dư dả cho mình sd.
Thứ 2 tự động lưu file, máy có lỡ sụp nguồn hay cúp điện thì mình cũng an tâm nhắm mắt ngủ.
Thứ 3 dễ dàng chia sẻ và phân quyền chia sẻ
Thứ 4 đc tích hợp sẵn các function hay ho từ Google
Thứ 5 trình chỉnh sửa code dễ dàng fix bug và tự động đề xuất câu lệnh
So với việc phải trả phí sd như 365 thì tính năng của Google sheets quá ư là tự do trong việc giúp mình tự học hỏi
 
Thứ nhất là mình không chê, vì vẫn đang dùng Gmail, dùng gói rẻ nhất của Google One. Google là cái gì đó nó cực quan trọng, từ mail để đăng nhập các nơi, từ map để mò đường lung tung, từ Drive để đồng bộ file, từ Sheets, Docs để xem Office trên điện thoại cho đỡ nặng, từ Youtube để xem Thái Sơn Hoa Dương, từ Photos để lưu ảnh, từ Find Device để tìm trộm.... Nếu 1 ngày mà Google phá sản thì sẽ không biết thế lào luôn.
Nhưng hiện giờ với Office thì Google tạm thời là người đến sau, nên phải chờ suất đến lượt.
Thứ 2 tự động lưu file
Cái này không được. Mình thường dựa vào ngày chỉnh sửa để xem file cũ hay mới nên với mình cái này không phù hợp.
 
Rảnh rỗi thì bạn cứ sd thử xem, trước mình cũng chê như bạn đấy, nhưng dùng rồi thì ghiền.
Thứ 1 về tính tiện lợi, nó chạy trên nền web, hàm đc cập nhật liên tục, nên trừ khi bạn ko vô mạng dc thì những tính năng miễn phí của nó cũng quá dư dả cho mình sd.
Thứ 2 tự động lưu file, máy có lỡ sụp nguồn hay cúp điện thì mình cũng an tâm nhắm mắt ngủ.
Thứ 3 dễ dàng chia sẻ và phân quyền chia sẻ
Thứ 4 đc tích hợp sẵn các function hay ho từ Google
Thứ 5 trình chỉnh sửa code dễ dàng fix bug và tự động đề xuất câu lệnh
So với việc phải trả phí sd như 365 thì tính năng của Google sheets quá ư là tự do trong việc giúp mình tự học hỏi
Đối với tôi thì đã quá muộn để có thể chuyển qua G.Sheets. Thứ nhất là tôi cũng không còn đi làm nữa nên không có nhu cầu và động cơ thay đổi. Thứ hai, tôi thường dùng VBA và đã quá quen dùng nó hơn là công thức nên không muốn chuyển qua G.sheets để rồi phải học thêm google apps script.
 
Con số 1 cuối cùng đâu rồi?

1681148198953.png
 
cái bác thấy ở ô A1 nó vẫn là số nhị phân, khi *1 nó trở thành số thực. Mà thằng excel này nó tự làm tròn hàng chục khi con số trở nên quá lớn.
Hình ảnh dưới đây cho thấy mình đã thêm số 1 vào hàng đơn vị nhưng nó tự làm tròn thành số 0. VÌ thế công thức trả về như thế.
cái này mình ko biết sửa.
1681180549378.png
Bài đã được tự động gộp:

Đối với tôi thì đã quá muộn để có thể chuyển qua G.Sheets. Thứ nhất là tôi cũng không còn đi làm nữa nên không có nhu cầu và động cơ thay đổi. Thứ hai, tôi thường dùng VBA và đã quá quen dùng nó hơn là công thức nên không muốn chuyển qua G.sheets để rồi phải học thêm google apps script.
Người sd rành như bác thì dùng bên nào cũng được. Còn đối với những người mới sd thì nên chọn gg sheet vì sẽ giúp cho việc support dễ dàng hơn rất nhiều. Những vấn đề lỗi file các thứ cũng dc khắc phục.
Nhu cầu công ty càng ngày càng cao, mà cứ ôm mãi cái excel 2003, 2010 thì vba cũng khó mà gánh ko nổi. Người ta ko có tiền nâng cấp phần mềm excel, cũng như ko có tiền để thuê đội ngũ cập nhật phần mềm cho công ty, thì đương nhiên người ta cũng k có tiền để thuê người viết code vba. Trong khi đó gg sheet miễn phí thì ko ai dùng.
 
Lần chỉnh sửa cuối:
cái bác thấy ở ô A1 nó vẫn là số nhị phân, khi *1 nó trở thành số thực. Mà thằng excel này nó tự làm tròn hàng chục khi con số trở nên quá lớn.
Hình ảnh dưới đây cho thấy mình đã thêm số 1 vào hàng đơn vị nhưng nó tự làm tròn thành số 0. VÌ thế công thức trả về như thế.
cái này mình ko biết sửa.
Chuyển về text là được. Thêm dấu nháy trước số.
1681183604160.png
Không biết quy tắc đọc những số lớn thì như thế nào. Nhưng theo mình thì để tỷ tỷ hợp lý hơn.
Chủ thớt tham khảo thêm ở đây nhé.
 
Hy vọng các bạn có thể update cho Office 2003 đến 2021 với.
Để hôm nào đẹp trời tôi sẽ gửi lên. Công thức sẽ sử dụng được trên Office 2007 trở lên (Office 2003 quá lạc hậu, nhiều hạn chế nên rất khó) và sẽ ngắn hơn công thức ở đây nhiều (chắc chỉ bằng 1/2).
 
Tôi chỉ quan tâm đến việc đọc đúng hay sai. Thiếu số 1 ở cuối thì tôi ý kiến, còn nhị phân hay không nhị phân thì chưa bàn tới.
Nếu bác gõ số thực (gõ thêm số khác 1 và 0) thì hàm sẽ ra kết quả đúng.
Bài đã được tự động gộp:

Để hôm nào đẹp trời tôi sẽ gửi lên. Công thức sẽ sử dụng được trên Office 2007 trở lên (Office 2003 quá lạc hậu, nhiều hạn chế nên rất khó) và sẽ ngắn hơn công thức ở đây nhiều (chắc chỉ bằng 1/2).
Nếu có cách khác ngắn gọn hơn, hi vọng là bác chia sẻ thuật toán để viết ra nó nhé.
Xin học hỏi thêm.
 
Lần chỉnh sửa cuối:
Nếu bác gõ số thực (gõ thêm số khác 1 và 0) thì hàm sẽ ra kết quả đúng.
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.
 
Web KT
Back
Top Bottom