Cần giúp đỡ hàm đọc số thành chữ office 365 (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

batista911

Thành viên chính thức
Tham gia
30/10/10
Bài viết
76
Được thích
-5
Em cần anh chị diễn đàn hỗ trợ giải giúp em bài này. File là em nhặt trên diễn đàn và vì nó phù hợp với nơi em làm việc nên anh chị giúp em trên file này luôn nhe.
- số dương thì đọc bình thường.
- số âm định dạng trong ngoặc (900.000). Đọc là Chín trăm ngàn đồng. Nghĩa là số âm thì chỉ đọc số trong ngoặc thôi. Hiện tại hàm của anh kia chỉ đọc được số dương thôi.
- số 0 thì chỗ cần đọc ra kết quả để trống luôn
Do em xài máy của công ty họ chặn hết tất cả addin, vba nên em ko thể cài thêm hay edit thủ công gì vào module của file. Chỉ sử dụng hàm được thôi.
Mong các anh chị hỗ trợ giúp em. Em cảm ơn
 

File đính kèm

.....
- số âm định dạng trong ngoặc (900.000). Đọc là Chín trăm ngàn đồng. Nghĩa là số âm thì chỉ đọc số trong ngoặc thôi. Hiện tại hàm của anh kia chỉ đọc được số dương thôi.
- số 0 thì chỗ cần đọc ra kết quả để trống luôn
.....
Mạn phép tác giả Hàm đổi số ra chữ (nếu không nhầm là của anh HuuThang) thay đổi 1 chút
Chủ thớt Thử tham khảo:
B8=IF(B1<0;B1*-1;B1)
B3=IFERROR(IF(B1<0;"Âm "&B13&" đồng./.";B13&" đồng./.;");"")
B13=UPPER(LEFT(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12));1))&RIGHT(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12));LEN(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12)))-1)

thay dấu ";" thành dấu tương thích với máy của bạn.
 
Không biết mục đích bạn lập bảng đó để làm gì, nhưng nếu chỉ đơn thuần là đọc số thành chữ thì mình có 2 công thức bên dưới, bạn thử xem (đây là công thức mình sưu tầm có chỉnh sửa lại một chút, xin phép tác giả vì bây giờ không nhớ nguồn nữa)

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(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))

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)))

Trên 365 bạn có thể dùng Define Name với hàm LAMBDA đặt tên cho công thức trên, khi đó bạn chỉ cần nhập tên đã đặt trong cell theo kiểu =VND(A1)
 
Mạn phép tác giả Hàm đổi số ra chữ (nếu không nhầm là của anh HuuThang) thay đổi 1 chút
Chủ thớt Thử tham khảo:
B8=IF(B1<0;B1*-1;B1)
B3=IFERROR(IF(B1<0;"Âm "&B13&" đồng./.";B13&" đồng./.;");"")
B13=UPPER(LEFT(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12));1))&RIGHT(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12));LEN(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12)))-1)

thay dấu ";" thành dấu tương thích với máy của bạn.
theo tôi sửa công thức ở cells sau dễ hơn
A2=IF($B$1<0,"Âm "&$B$13,$B$13)
A3=IF($B$1<0,"Âm "&$B$13,$B$13&" đồng./.")
A8=ABS(B1)
 
Mạn phép tác giả Hàm đổi số ra chữ (nếu không nhầm là của anh HuuThang) thay đổi 1 chút
Chủ thớt Thử tham khảo:
B8=IF(B1<0;B1*-1;B1)
B3=IFERROR(IF(B1<0;"Âm "&B13&" đồng./.";B13&" đồng./.;");"")
B13=UPPER(LEFT(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12));1))&RIGHT(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12));LEN(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12)))-1)

thay dấu ";" thành dấu tương thích với máy của bạn.
Cảm ơn bạn lát mình test rồi báo lại nha
Bài đã được tự động gộp:

Không biết mục đích bạn lập bảng đó để làm gì, nhưng nếu chỉ đơn thuần là đọc số thành chữ thì mình có 2 công thức bên dưới, bạn thử xem (đây là công thức mình sưu tầm có chỉnh sửa lại một chút, xin phép tác giả vì bây giờ không nhớ nguồn nữa)

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(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))

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)))

Trên 365 bạn có thể dùng Define Name với hàm LAMBDA đặt tên cho công thức trên, khi đó bạn chỉ cần nhập tên đã đặt trong cell theo kiểu =VND(A1)
Mình làm ngân hàng bạn ạ, mình cần nó vì mình lập biên bản kiểm quỹ số tiền nhiều và lớn, ngồi gõ tay rất mệt bạn ạ. Mình để ví dụ rồi mình đem về cái bảng kiểm quỹ của mình. Mình không đem lên đây được. Cảm ơn bạn đã hỗ trợ, mình test xong báo bạn ngay
Bài đã được tự động gộp:

theo tôi sửa công thức ở cells sau dễ hơn
A2=IF($B$1<0,"Âm "&$B$13,$B$13)
A3=IF($B$1<0,"Âm "&$B$13,$B$13&" đồng./.")
A8=ABS(B1)
Cảm ơn bạn, mình test xong sẽ báo lại kết quả liền
 
Mạn phép tác giả Hàm đổi số ra chữ (nếu không nhầm là của anh HuuThang) thay đổi 1 chút
Chủ thớt Thử tham khảo:
B8=IF(B1<0;B1*-1;B1)
B3=IFERROR(IF(B1<0;"Âm "&B13&" đồng./.";B13&" đồng./.;");"")
B13=UPPER(LEFT(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12));1))&RIGHT(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12));LEN(TRIM(IF(A8=0;" ";C11&" "&C12&" "&D11&" "&D12&" "&E11&" "&E12&" "&F11&" "&F12&" "&G11&" "&G12&" "&H11&" "&H12&" "&I11&" "&I12&" "&J11&" "&J12&" "&K11&" "&K12&" "&L11&" "&L12&" "&M11&" "&M12&" "&N11&" "&N12)))-1)

thay dấu ";" thành dấu tương thích với máy của bạn.
Ngay khúc B13 nó báo vầy nè bạn.
 

File đính kèm

  • IMG_20250327_114659.jpg
    IMG_20250327_114659.jpg
    164.5 KB · Đọc: 4
Web KT

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

Back
Top Bottom