Hàm chuyển số thành chữ trong Excel

Rate this post

(Hàm chuyển số thành chữ trong Excel) Với những người sử dụng Excel thường xuyên trong công việc tính toán, thống kê hay báo cáo thì việc chuyển số tiền thành chữ một cách thủ công sẽ rất mất thời gian. Hôm nay, Blog tin học sẽ hướng dẫn các bạn xây dựng hàm chuyển số thành chữ trong Excel. Sau đây là các bước thực hiện:

1. Khởi động Microsoft Excel

2. Đổi tên 1 Sheet bất kỳ thành Chuso

Ham chuyen so thanh chu trong excel

Nhiệm vụ của Sheet này là chứa toàn bộ các ký tự phục vụ việc chuyển số sang chữ. Những chữ số được để trong Sheet giúp người sử dụng có thể thay đổi dễ dàng các mã font như: Unicode, TCVN3, VNI.

3. Bắt đầu Visual Basic Editor bằng ALT + F11

Trong menu Insert chọn Module.

Ham chuyen so thanh chu trong excel

4. Nhập toàn bộ đoạn mã sau

Function ReadNumber(ByVal MyNumber)
Dim VND_Dong, VND_Xu, Temp
Dim DecimalPlace, Count
ReDim Place(9) As String

‘Tham chieu den cac o trong Sheet Chuso de lay gia tri
Place(2) = ActiveWorkbook.Sheets(“Chuso”).Range(“D2”).Value
Place(3) = ActiveWorkbook.Sheets(“Chuso”).Range(“D3”).Value
Place(4) = ActiveWorkbook.Sheets(“Chuso”).Range(“D4”).Value
Place(5) = ActiveWorkbook.Sheets(“Chuso”).Range(“D5”).Value

MyNumber = Trim(Str(MyNumber))
DecimalPlace = InStr(MyNumber, “.”)

If DecimalPlace > 0 Then
VND_Xu = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & “00”, 2))
MyNumber = Trim(Left(MyNumber, DecimalPlace – 1))
End If

Count = 1
Do While MyNumber <> “”
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> “” Then VND_Dong = Temp & Place(Count) & VND_Dong
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) – 3)
Else
MyNumber = “”
End If
Count = Count + 1
Loop
Select Case VND_Dong
Case “”
VND_Dong = ActiveWorkbook.Sheets(“Chuso”).Range(“D8”).Value  ‘Khong Dong
Case “One”
VND_Dong = ActiveWorkbook.Sheets(“Chuso”).Range(“D9”).Value  ‘Mot Dong
Case Else
VND_Dong = VND_Dong & ActiveWorkbook.Sheets(“Chuso”).Range(“D7”).Value  ‘Dong
End Select
‘Doi voi Xu
Select Case VND_Xu
Case “”
VND_Xu = ActiveWorkbook.Sheets(“Chuso”).Range(“D11”).Value  ‘Khong xu
Case “One”
VND_Xu = ActiveWorkbook.Sheets(“Chuso”).Range(“D12″).Value  ‘Mot xu
Case Else
VND_Xu = ” và ” & VND_Xu & ActiveWorkbook.Sheets(“Chuso”).Range(“D10”).Value  ‘Xu
End Select
‘Cat bo khoang trang dau tien
VND_Dong = Right(VND_Dong, Len(VND_Dong) – 1)
‘Viet hoa chu cai dau tien
VND_Dong = UCase(Left(VND_Dong, 1)) & Right(VND_Dong, Len(VND_Dong) – 1)
ReadNumber = VND_Dong & VND_Xu
End Function

‘Chuyen doi so tu 100->999 sang chu
Function GetHundreds(ByVal MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right(“000” & MyNumber, 3)
‘ Chuyen doi noi hang tram
If Mid(MyNumber, 1, 1) <> “0” Then
Result = GetDigit(Mid(MyNumber, 1, 1)) & ActiveWorkbook.Sheets(“Chuso”).Range(“D6”).Value ‘Tram
End If
‘ Chuyen doi hang chuc
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

‘Chuyen doi so tu 10->99 sang chu
Function GetTens(TensText)
Dim Result As String
Result = “”
If Val(Left(TensText, 1)) = 1 Then
‘Gia tri nam trong khoang tu 10->19
Select Case Val(TensText)
‘Tham chieu den O B2 de lay chu: muoi
Case 10: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“B2”).Value
Case 11: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“B3”).Value
Case 12: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“B4”).Value
Case 13: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“B5”).Value
Case 14: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“B6”).Value
Case 15: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“B7”).Value
Case 16: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“B8”).Value
Case 17: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“B9”).Value
Case 18: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“B10”).Value
Case 19: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“B11”).Value
Case Else
End Select
Else
‘Gia tri trong khoang tu 20->99
Select Case Val(Left(TensText, 1))
‘Tham chieu den O C2 de lay chu: hai muoi
Case 2: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“C2”).Value
Case 3: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“C3”).Value
Case 4: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“C4”).Value
Case 5: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“C5”).Value
Case 6: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“C6”).Value
Case 7: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“C7”).Value
Case 8: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“C8”).Value
Case 9: Result = ActiveWorkbook.Sheets(“Chuso”).Range(“C9”).Value
Case Else
End Select
Result = Result & GetDigit(Right(TensText, 1))
End If
GetTens = Result
End Function

‘Chuyen so tu 1->9 sang chu
Function GetDigit(Digit)
Select Case Val(Digit)
‘Tham chieu den O A2 de lay chu: mot
Case 1: GetDigit = ActiveWorkbook.Sheets(“Chuso”).Range(“A2”).Value
‘So hai
Case 2: GetDigit = ActiveWorkbook.Sheets(“Chuso”).Range(“A3”).Value
‘So ba
Case 3: GetDigit = ActiveWorkbook.Sheets(“Chuso”).Range(“A4”).Value
‘So bon
Case 4: GetDigit = ActiveWorkbook.Sheets(“Chuso”).Range(“A5”).Value
‘So nam
Case 5: GetDigit = ActiveWorkbook.Sheets(“Chuso”).Range(“A6”).Value
‘So sau
Case 6: GetDigit = ActiveWorkbook.Sheets(“Chuso”).Range(“A7”).Value
‘So bay
Case 7: GetDigit = ActiveWorkbook.Sheets(“Chuso”).Range(“A8”).Value
‘So tam
Case 8: GetDigit = ActiveWorkbook.Sheets(“Chuso”).Range(“A9”).Value
‘So chin
Case 9: GetDigit = ActiveWorkbook.Sheets(“Chuso”).Range(“A10”).Value
Case Else: GetDigit = “”
End Select
End Function

Click Save để lưu.

5. Sử dụng hàm vừa tạo

Bạn quay lại màn hình Excel và thực hiện 1 trong 2 cách sau để sử dụng hàm vừa tạo:
  • Cách 1:
    Cú pháp: =readnumber(Số cần chuyển)
    Ví dụ: =readnumber(87545276)
  • Cách 2:
    Cú pháp: =readnumber(Địa chỉ ô cần chuyển)
    Ví dụ: =readnumber(B4)

Nếu bạn gặp phải trường hợp giá trị trả về #NAME? thì bạn thực hiện theo các bước sau (đối với Office 2007):

  • Click Office Button -> Excel Options
  • Chọn Trust Center -> Trust Center Settings
Ham chuyen so thanh chu trong excel
Chọn Macro Settings ->Enable all macros (not recommended; potentially dangerous code can run)
Ham chuyen so thanh chu trong excel
Chọn OK.
Trên đây là thủ thuật office về chuyển số thành chữ trong Excel. Bạn có thể tham khảo thêm bài viết chuẩn hóa chuỗi trong Excel khá hữu ích cho công việc văn phòng của bạn!
Hàm chuyển số thành chữ trong Excel

5 (100%) 1 vote