Hàm đọc vừa số vừa chữ trong Excel tạo bằng VBA (1 người xem)

Liên hệ QC

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

bluesoftsbl1

Thành viên thường trực
Tham gia
3/9/14
Bài viết
278
Được thích
89
Hàm đọc vừa số vừa chữ trong Excel tạo bằng VBA

NumAndText.jpg

THAM KHẢO THÊM KHÓA HỌC LẬP TRÌNH VBA TRONG EXCEL CƠ BẢN

Mình xin chia sẻ tới các bạn hàm NumAndText để đọc vừa số vừa chữ ở đơn vị tiền tệ. Ví dụ cần đọc con số 1234567890 là "1 Tỷ 234 Triệu 567 Ngàn 890 Đồng". Chúng ta chỉ cần gõ công thức =NumAndText(1234567890).Thực hiện các bước sau:
Bước 1: ALT+F11 vào môi trường VBA. Vào menu Insert->Module - Tạo module
Bước 2: Copy đoạn code dưới đây dán vào module
[GPECODE=vb]
'----COPY CODE
Function NumAndText(ByVal Amount As Double, _
Optional ByVal StrUnit As String = "Dong") As String
'Author: Nguyen Duy Tuan - duytuan@bluesofts.net
Dim CountGroup&, ArrSo, StrSo$, I&, nSkip&, S$, Ub&
Dim Doc(3)

If StrUnit = "Dong" Then StrUnit = ChrW(272) & ChrW(7891) & "ng"

Doc(0) = "T" & ChrW(7927) ' "Ty"
Doc(1) = "Tri" & ChrW(7879) & "u" ' "Trieu"
Doc(2) = "Ngàn" ' "Ngan"
Doc(3) = StrUnit

StrSo = Format(Amount, "#,##0")

ArrSo = Split(StrSo, ",")
Ub = UBound(ArrSo)
CountGroup = Ub - LBound(ArrSo)
nSkip = 4 - CountGroup
For I = LBound(ArrSo) To Ub
S = RemoveZeroLeading(ArrSo(I))
If S <> "" Then
NumAndText = NumAndText & IIf(I = 0, "", " ") & _
S & " " & Doc(nSkip + I - 1)
Else
If I = Ub Then
NumAndText = NumAndText & " " & Doc(nSkip + I - 1)
End If
End If
Next
StrUnit = Trim(StrUnit)
End Function
'-----------------------------------------------------------------
Function RemoveZeroLeading(ByVal S As String) As String
Dim I&
For I = 1 To Len(S)
If Mid(S, I, 1) <> "0" Then
Exit For
End If
Next
RemoveZeroLeading = Mid(S, I)
End Function
'----KẾT THÚC COPY CODE
[/GPECODE]
Bước 3. Thực hành. Bạn nhấn ALT+F11 để ra môi trường bảng tính. Nhập công thức:
=NumAndText(1234567890) sẽ đọc là: 1 Tỷ 234 Triệu 567 Ngàn 890 Đồng

Bạn có thể đọc các con số bất kỳ trong phạm vi cao nhất tỷ đồng luôn đúng.
=NumAndText(1234567890)
=NumAndText(12345678)
=NumAndText(1234567)
=NumAndText(123456)
=NumAndText(12345)
=NumAndText(1234)
=NumAndText(123)
=NumAndText(12)

DOWNLOAD

Tác giả: Nguyễn Duy Tuân - Công ty Cổ phần Bluesofts

 
Lần chỉnh sửa cuối:
Đọc kiểu này thì dùng công thức cho gọn.
Mã:
=TRIM(IFERROR(MID(TEXT(A1,"000""    Tỷ ""000"" Triệu ""000""  Ngàn ""000"),12-INT(LOG10(A1))+(3-INT((INT(LOG10(A1)))/3))*7,99),0)&" Đồng")
 
Mục tiêu bài viết này mình cung cấp ví dụ cho các bạn đang học VBA. Nếu ai có hiểu biết về VBA sẽ thấy có những việc mà công thức Excel không thể làm được nhưng VBA thì làm được.
 
Mục tiêu bài viết này mình cung cấp ví dụ cho các bạn đang học VBA. Nếu ai có hiểu biết về VBA sẽ thấy có những việc mà công thức Excel không thể làm được nhưng VBA thì làm được.
Công thức cũng có ở đây:
=IF(MOD(INT(A1/1000000000),1000),MOD(INT(A1/1000000000),1000)&" Tỷ ","")&IF(MOD(INT(A1/1000000),1000),MOD(INT(A1/1000000),1000)&" Triệu ","")&IF(MOD(INT(A1/1000),1000),MOD(INT(A1/1000),1000)&" Ngàn ","")&IF(MOD(A1,1000),MOD(A1,1000)&" ","")&"Đồng"

http://www.giaiphapexcel.com/forum/showthread.php?112466-Hàm-tách-số&p=705636#post705636
 
Web KT

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

Back
Top Bottom