Chia sẻ với ae đang sử dụng Excel hay Google Sheet để làm bảng thống kê, xuất hóa đơn, tính toán cần chuyển từ số thành văn bản chữ, đọc số tiền, giá tiền viết bằng chữ sử dụng 1 công thức hàm duy nhất tự động nhanh chóng, dễ dàng ai cũng có thể làm được
- Đếm được tới số trăm tỷ tỷ
- 1 tỷ có 9 con số 0
- 100 tỷ tỷ = 20 con số 0
Hàm chuyển tiền thành chữ cho excel 365 và Google Sheets
Code:
=ArrayFormula(LET(money;TEXT(B3*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");SUBSTITUTE(viet_hoa;LEFT(viet_hoa);UPPER(LEFT(viet_hoa));1)))
Hàm sử dụng Lambda và Reduce sử dụng trên Google Sheet
Code:
=ArrayFormula(Iferror(Reduce("Đọc số thành chữ";B3:B;Lambda(x;y;{x;Regexreplace(Substitute(Substitute(Trim(Substitute(Substitute(Substitute(Substitute(Substitute(Substitute(Regexreplace(Substitute(Substitute(Substitute(Substitute(Transpose(Query(Transpose(Iferror(Vlookup(Split(Regexreplace(Trim(Regexreplace(Trim(y);"đ";));"(\S)";"$1+");"+.");{Sequence(9)\{"một";"hai";"ba";"bốn";"năm";"sáu";"bảy";
"tám";"chín"}};2;0);"-")&" "&Vlookup(Transpose(Sort(Sequence(Len(Regexreplace(Trim(y);"\D+|-";)));1;0));{Sequence(15)\{"đồng";"mươi";"trăm";"nghìn";"mươi";"trăm";"triệu";
"mươi";"trăm";"tỷ";"mươi";"trăm";"nghìn tỷ";"mươi";"trăm"}};2;0));;9^4));"- mươi";"lẻ");"- trăm";"không trăm");"không trăm lẻ -";);"lẻ - nghìn";"nghìn");"triệu nghìn";
"triệu");"lẻ - triệu";"triệu");"tỷ triệu";"tỷ");"lẻ - tỷ";"tỷ");"lẻ -";);"nghìn tỷ";"nghìn");"-";));"một mươi";"mười");"mươi một";"mươi mốt");"^.";Proper(Vlookup(
Left(y)*1;{Sequence(9)\{"m";"h";"b";"b";"n";"s";"b";"t";"c"}};2;0)))}))))
Bảng tính mẫu cho ae ví dụ và thực hành:
Nếu ae có công thức hàm nào tối ưu hơn có thể comment bên dưới cho mọi người cùng học hỏi nhé
Last edited: