Chia sẻ: Công thức chuyển số thành chữ cho Excel 2007

Liên hệ QC
Như đã hứa, hôm nay tôi chia sẻ công thức chuyển số thành chữ sử dụng được trên Excel 2007 trở lên.
Tiếng Việt:
Mã:
=IF(ABS(A1)>=10^15;"###";IF(A1<0;"Âm ";MID("KMHBBNSBTC";LEFT(ROUND(A1;0))+1;1))&MID(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(TEXT(A1;SUBSTITUTE("0\*0\=0\/0\*0;0\*0\=0\/0\*0";0;"0\-0\+0"));LEN(ROUND(ABS(A1);0))*2-1);"0-0+0*";"");"0-0+0/";"");"0-0+0";"");"0+0";"");"0+";" lẻ");"+0";"+");"+5";"+ lăm");"1+";" mười");"+1";"+ mốt");0;" không");1;" một");2;" hai");3;" ba");4;" bốn");5;" năm");6;" sáu");7;" bảy");8;" tám");9;" chín");"+";" mươi");"-";" trăm");"*";" ngàn,");"/";" triệu,");",=";"=");"=";" tỷ,")&"  ";",  ";""));2-(A1<0);999))
Tiếng Anh:
Mã:
=IF(ABS(A1)>=10^15;"###";IF(A1<0;"Negative ";MID("ZOTTFFSSENTETTFFSSEN";LEFT(ROUND(A1;0);IFERROR(IF(LEFT(ROUND(A1;0))*MOD(INT(LOG10(ROUND(ABS(A1);0)));3)=1;2;1);1))+1;1))&MID(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RIGHT(TEXT(A1;SUBSTITUTE("0\\0\=0\/0\*0;0\\0\=0\/0\*0";0;"0\-0\+0"));LEN(ROUND(ABS(A1);0))*2-1);"0-0+0=";"");"0-0+0/";"");"*0-";"* and");"0-0+0*";"");"0-";"");"0+";"");"1+0";" ten");"1+1";" eleven");"1+2";" twelve");"1+3";" thirteen");"1+4";"4teen");"1+5";" fifteen");"1+6";"6teen");"1+7";"7teen");"1+8";"8een");"1+9";"9teen");"2+";" twenty:");"3+";" thirty:");"4+";" forty:");"5+";" fifty:");"8+";"8y:");"+";"ty:");"y:0";"y");0;" zero");1;" one");2;" two");3;" three");4;" four");5;" five");6;" six");7;" seven");8;" eight");9;" nine");"-";" hundred and");"*";" thousand,");"/";" million,");"=";" billion,");"\";" trillion,");": ";"-");" and zero";"");", a";" a")&"  ";",  ";""));2-(A1<0);999))
Lưu ý: Các công thức trên chỉ chuyển được số trong phạm vi từ -10^15+1 đến 10^15-1, ngoài phạm vi này công thức sẽ trả về "###"
Bạn @cantl vào nhận hàng nhé.
--
Nhân tiện tôi chia sẻ luôn công thức chuyển số thành chữ tiếng Việt và tiếng Anh sử dụng trên Excel 365 và Goolge Sheet, không giới hạn độ lớn của số cần đọc (số lớn nhập vào dạng chuỗi).
Tiếng Việt:
Mã:
=LET(so;A1;d;SIGN(so)+2;n;"00"&IF(ISTEXT(so);MID(so;1+(d=1);99);TEXT(so;"0;0"));l;LEN(n);g;INT(l/3);r;SUBSTITUTE(TEXTJOIN(",";1;MAP(SEQUENCE(g;1;g;-1);LAMBDA(k;LET(s;LEFT(n;l-k*3+3);a;{"không";"một";"hai";"ba";"bốn";"năm";"sáu";"bảy";"tám";"chín"};b;MIN(k;MOD(k-2;3)+2);x;RIGHT(s;3)*1;y;MOD(x;100);z;MOD(y;10);IF(x>0;IF(LEN(s)>4;" "&INDEX(a;INT(x/100)+1)&" trăm"&IF(AND(y<10;z>0);" lẻ";"");"")&IF(y>=20;" "&INDEX(a;INT(y/10)+1)&" mươi";IF(y>=10;" mười";""))&IF(z>0;LET(t;(y>11)*((z=1)+(z=5)*2)+1;" "&CHOOSE(t;INDEX(a;z+1);"mốt";"lăm"));"")&CHOOSE(b;"";" ngàn";" triệu";" tỷ");IF(b=4;" tỷ";""))))));", tỷ";" tỷ");CHOOSE(d;"Âm"&r;"Không";UPPER(MID(r;2;1))&MID(r;3;999)))
Tiếng Anh:
Mã:
=LET(so;A1;d;SIGN(so)+2;n;"00"&IF(ISTEXT(so);MID(so;1+(d=1);99);TEXT(so;"0;0"));l;LEN(n);g;INT(l/3);r;SUBSTITUTE(TEXTJOIN(",";1;MAP(SEQUENCE(g;1;g;-1);LAMBDA(k;LET(s;LEFT(n;l-k*3+3);a;{"zero";"one";"two";"three";"four";"five";"six";"seven";"eight";"nine";"ten";"eleven";"twelve";"thirteen";"fourteen";"fifteen";"sixteen";"seventeen";"eighteen";"nineteen"};b;{"";"twenty";"thirty";"forty";"fifty";"sixty";"seventy";"eighty";"ninety"};x;RIGHT(s;3)*1;y;MOD(x;100);z;MOD(y;10);IF(x>0;IF(LEN(s)>4;IF(x<100;IF(k=1;" and";"");" "&INDEX(a;INT(x/100)+1)&" hundred"&IF(y>0;" and";""));"")&IF(y>=20;" "&INDEX(b;INT(y/10))&IF(z>0;"-"&INDEX(a;z+1);"");IF(y>0;" "&INDEX(a;y+1);""))&CHOOSE(k;"";" thousand"; " million"; " billion"; " trillion";" quadrillion";" quintillion";" sextillion";" septillion";" octillion");"")))));", and";" and");CHOOSE(d;"Negative"&r;"Zero";UPPER(MID(r;2;1))&MID(r;3;999)))
--
-460.101.895.031
Âm bốn trăm sáu mươi tỷ, một trăm lẻ một triệu, tám trăm chín mươi lăm ngàn, không trăm ba mươi mốt
Negative four hundred and sixty billion, one hundred and one million, eight hundred and ninety-five thousand and thirty-one
cảm ơn bạn rất nhiều.
 
1736216711329.png
Bấy lâu e toàn xài công thức này, cám ơn anh đã xây dựng 1 hàm tinh gọn trong 1 dòng. Quá đã./.
 
Web KT

Bài viết mới nhất

Back
Top Bottom