Kiến Thức Excel 2 Cách đổi số tiền thành chữ trong Excel với mã VBA...

2 Cách đổi số tiền thành chữ trong Excel với mã VBA và Add-ins

Để đổi số tiền thành chữ trong Excel (ví dụ như: 1,500,000 thành “Một Triệu Năm Trăm Nghìn Đồng” ta không thể sử dụng hàm sẵn có mà có thể sử dụng 2 cách sau:

  • Cách 1 – Sử dụng mã VBA để chuyển đổi số tiền thành chữ (an toàn nhất và ít khi gây lỗi)
  • Cách 2 – Sử dụng các Add-in như VnTools, UNIVNI, Doiso để cài đặt và chuyển đổi số tiền thành chữ (cách này dễ gây xung đột hơn và có thể gây lỗi)

Dưới đây là hướng dẫn chi tiết cách để chuyển số tiền thành chữ:

Cách 1: Sử dụng mã VBA để đổi số tiền thành chữ

Để sử dụng mã VBA để đổi số tiền thành chữ, ta thực hiện như sau:

Bước 1: Mở file Excel cần đổi số tiền thành chữ.

Bước 2: Nhấn Alt + F11 để mở cửa sổ chỉnh sửa Visual Basic

Bước 3: Trong Menu của cửa sổ Visual Basic vào Tab Insert > chọn Module

mở module trong visual basic editor

Bước 4: Ta sẽ thấy cửa sổ có tên “tên trang tính – Module 1“, ta sẽ copy toàn bộ mã VBA dưới đây rồi dán vào khung cửa sổ này:

dán mã VBA để đổi số tiền thành chữ vào cửa sổ VBA

Mã VBA để chuyển đổi số tiền thành chữ theo đơn vị tiền tệ Việt Nam:

Option Explicit

' Main Function to convert number to Vietnamese currency words (only whole Dong, no Xu)
Function SpellNumberVND(ByVal MyNumber)
Dim Dong As String, Temp As String
Dim DecimalPlace As Long, Count As Long
ReDim Place(9) As String
Place(2) = " Nghìn "
Place(3) = " Triệu "
Place(4) = " Tỷ "
Place(5) = " Nghìn Tỷ "

' Validate input
If Not IsNumeric(MyNumber) Then
SpellNumberVND = "Đầu vào không hợp lệ"
Exit Function
End If

' Handle negative numbers
If MyNumber < 0 Then
SpellNumberVND = "Số âm không được hỗ trợ"
Exit Function
End If

MyNumber = Trim(Str(MyNumber)) ' Convert to string and remove extra spaces
DecimalPlace = InStr(MyNumber, ".")

' Remove decimal part if any (since we don't need Xu)
If DecimalPlace > 0 Then
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If

' Handle zero case early
If Val(MyNumber) = 0 Then
SpellNumberVND = "Không Đồng"
Exit Function
End If

Count = 1
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> "" Then Dong = Temp & Place(Count) & Dong
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop

' Add currency unit
If Dong <> "" Then
Dong = Dong & " Đồng"
Else
Dong = "Không Đồng"
End If

SpellNumberVND = Dong
End Function

' Function to convert hundreds part
Function GetHundreds(ByVal MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3) ' Ensure 3 digits

' Convert the hundreds place
If Mid(MyNumber, 1, 1) <> "0" Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & " Trăm "
End If

' Convert the tens and ones place
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & GetTens(Mid(MyNumber, 2))
Else
Result = Result & GetDigit(Mid(MyNumber, 3))
End If

GetHundreds = Result
End Function

' Function to convert tens and ones place
Function GetTens(TensText)
Dim Result As String
Result = "" ' Null out the temporary function value
If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19
Select Case Val(TensText)
Case 10: Result = "Mười"
Case 11: Result = "Mười Một"
Case 12: Result = "Mười Hai"
Case 13: Result = "Mười Ba"
Case 14: Result = "Mười Bốn"
Case 15: Result = "Mười Lăm"
Case 16: Result = "Mười Sáu"
Case 17: Result = "Mười Bảy"
Case 18: Result = "Mười Tám"
Case 19: Result = "Mười Chín"
Case Else
End Select
Else ' If value between 20-99
Select Case Val(Left(TensText, 1))
Case 2: Result = "Hai Mươi "
Case 3: Result = "Ba Mươi "
Case 4: Result = "Bốn Mươi "
Case 5: Result = "Năm Mươi "
Case 6: Result = "Sáu Mươi "
Case 7: Result = "Bảy Mươi "
Case 8: Result = "Tám Mươi "
Case 9: Result = "Chín Mươi "
Case Else
End Select
Result = Result & GetDigit(Right(TensText, 1)) ' Retrieve ones place
End If
GetTens = Result
End Function

' Function to convert single digit to word
Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = "Một"
Case 2: GetDigit = "Hai"
Case 3: GetDigit = "Ba"
Case 4: GetDigit = "Bốn"
Case 5: GetDigit = "Năm"
Case 6: GetDigit = "Sáu"
Case 7: GetDigit = "Bảy"
Case 8: GetDigit = "Tám"
Case 9: GetDigit = "Chín"
Case Else: GetDigit = ""
End Select
End Function

Bước 5: Nhấn Ctrl + S để lưu bảng tính.

Ta cần phải lưu lại cửa sổ làm việc. Khi lưu cửa sổ làm việc bằng macro, ta sẽ thấy thông báo The following features cannot be saved in macro-free workbook” 

thông báo The following features cannot be saved in macro-free workbook

Click vào No > khi thấy hộp thoại mới > chọn nơi lưu file > tại Save as type thì chọn Excel macro-enabled workbook rồi nhấn Save.

lưu file để sử dụng macro nhằm tiến hành đổi số thành chữ tiền

Bước 6: Sử dụng macro SpellNumberVND

Bây giờ, ta có thể sử dụng hàm SpellNumber trong bảng tính Excel để đổi số tiền thành chữ. (ví dụ ô A2 là ô chứa số tiền cần đổi thành chữ).

Ta sử dụng công thức =SpellNumberVND(A2)

Cách 2: Sử dụng các ADD-INS

1. Sử dụng vnTools

Bước 1: Tải vnTools tại link: https://download.com.vn/vntools-110998

Bước 2: Tiến hành cài đặt vnTools

cài đặt vnTools
Click đúp vào file đã tải về > chọn Next để cài đặt 
cài đặt vnTools
tiếp tục ấn Next
cài đặt vnTools
chọn vùng cài đặt rồi chọn Next
cài đặt vnTools
Tiếp tục chọn Next
cài đặt vnTools
chọn Install để bắt đầu cài đặt
cài đặt vnTools
chọn Finish để hoàn thành cài đặt

Bước 3: Sử dụng vnTools để đổi số tiền thành chữ

đổi số tiền thành chữ với vnTools
Mở file Excel
cách đổi số thành tiền với vnTools
vào Options
cài đặt add-in vnTools
Chọn Add-in, tại mục Manage Add-in, ấn Go.
cài đặt add-ins vnTools
Khi cửa sổ Add-in mở, chọn Browse.
cách cài đặt add-ins vnTools
Tìm đến địa chỉ đã lưu vnTools cài đặt ở trên.(mặc định khi chạy vnTools là C:\Program Files (x86)\vnTools.) > ta sẽ thấy file Ufunctions, kích chọn file này và ấn OK.
cài đặt add-ins vnTools
Sau khi mở file, file NTD’s Tools sẽ xuất hiện trên cửa sổ Add-ins, kích chọn file đó và ấn OK.

Sau khi cài Add-ins xong, trên thanh công cụ excel sẽ có tab vnTools. Để đổi số tiền thành chữ trong bảng tính Excel, ta kích chọn mục Đổi số thành chữ (VN) như hình dưới.

mục đổi số thành chữ chữ trong vnTools

Sẽ có 1 bảng xuất hiện > lần lượt chọn “ô cần chuyển đổi” và ” ô chứa kết quả” rồi nhấn VND() để hoàn tất chuyển đổi:

sử dụng vnTools để đổi số tiền thành chữ
Nếu dữ liệu bạn muốn chuyển đổi ra chữ không phải dạng tiền tệ thì bỏ chọn mục Dùng đơn vị cho hàm VND.
chuyển đổi số tiền thành chữ bằng vnTools
kết quả chuyển đổi số tiền thành chữ bằng vnTools

2. Sử dụng Add-in UNIVNI

Bước 1: Tải file Excel Add-in UNIVNI tại link: https://www.mediafire.com/file/6qegfra7tpwcwf8/UNIVNI.xla/file

Bước 2:  Thêm file Excel vừa tải vào Excel

cài đặt add-in UNIVNI
Mở Excel > vào file
cài đặt add-in UNIVNI
chọn Options 
cài đặt add-ins UNIVNI
khi cửa sổ xuất hiện > kích chọn mục Add-ins sau đó ấn Go.
cài đặt Add-ins UNIVNI
chọn Browse

Tìm đến thư mục nơi bạn lưu file vừa tải ở Bước 1, kích chọn rồi ấn Open.

cài đặt Add-in UNIVNI
Tìm nơi lưu file vừa tải ở bước 1 > chọn file UNIVNI > chọn Open
cài đặt add-in UNIVNI
Click chọn Univni rồi chọn Ok

Bước 3: khi đã thêm add-ins UNIVNI thành công, ta sẽ sử dụng các công thức công thức sau để đổi số tiền thành chữ:

  • =UNI(Số_Tiền) khi sử dụng  font chữ là Unicode.
  • =VNI(Số_Tiền) được sử dụng nếu font chữ là VNI.

Ví dụ: chuyển số 252300A2) thành chữ. Tại ô B2 ghi “=UNI(A2)“.

sử dụng add-ins UNIVNI để đổi số tiền thành chữ

sử dụng add-ins UNIVNI để đổi số tiền thành chữ
kết quả thu được khi sử dụng hàm =UNI

3. Sử dụng Add-ins Doiso

Bước 1: Tải về file excel Doiso.xla tại link: https://www.mediafire.com/file/qknev0ju9d3nfl4/Doiso.xla/file

Bước 2: Thêm file vừa tải vào excel tương tự như đã làm với các Add-ins trước

cài đặt add-ins doiso.xla
Mở Excel > vào File
cài đặt add-ins doiso.xla
chọn Options
cài đặt add-ins doiso.xla
Tại giao diện của mục Excel Options, chọn Add-ins. Sau đó ấn Go để tiếp tục.
cài đặt add-ins doiso.xla
Chọn Browse

File cần chọn có tên Doiso như ảnh dưới đây:

cài đặt add-ins doiso.xla
Tìm nơi lưu file Exel doiso.xla vừa tải về > chọn file Doiso > chọn Open
cài đặt add-ins Doiso.xla
chọn Doiso > chọn Ok để hoàn tất cài đặt

Bước 3: Cách sử dụng Doiso.xla để đổi số tiền thành chữ

Sau khi hoàn tất bước 2 ta có thể sử dụng công thức sau để đổi số thành chữ: =VND(Số_cần_đổi)

Ví dụ: chuyển số 252300A2) thành chữ. Tại ô B2 ghi “=VND(A2)“. ta được kết quả sau:

kết quả sử dụng Add-ins doiso.xla để đổi số tiền thành chữ
kết quả sử dụng hàm VND

Trên đây là các cách để đổi số tiền thành chữ theo đơn vị tiền tệ Việt Nam. Mong rằng bài viết này hưu ích và chúc bạn áp dụng thành công!