Hàm Chuyển Số Sang Chữ Trong Excel

Thảo luận trong 'Tổng Hợp' bắt đầu bởi Pussy, Thg 1 6, 2017.

  1. Pussy

    Pussy New Member Chuyển tiền Tìm chủ đề

    Bài viết:
    Tìm chủ đề
    950
    iện nay, việc chuyển đổi số thành chữ trong Excel đã không còn phải làm thủ công và mất thời gian như trước bởi đã có sự hỗ trợ của các tiện ích (Add-ins). Đây là những tiện ích được phát triển bởi một nhóm lập trình nào đó hay một công ty. Tuy nhiên, các tiện ích này đã được biên dịch nên bạn không thể xem và chỉnh sửa Code theo ý muốn. Vậy bạn có muốn viết 1 hàm chuyển đổi số sang chữ cho riêng mình ngay trên phần mềm Excel không? Cuuhotinhoc.com sẽ hướng dẫn các bạn viết hàm chuyển số sang chữ và sử dụng hàm này như các hàm thông dụng khác trong Excel như AVERAGE, SUM, IF, COUT…

    1. Khởi động Microsoft Excel

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

    Sheet này chứa tất cả các ký tự phục vụ việc chuyển số sang chữ do việc nhập ký tự tiếng việt tại màn hình soạn thảo Code bị lỗi. Như vậy, chữ số được để trong Sheet giúp người sử dụng dễ dàng thay đổi các mã font như: Unicode, TCVN3, VNI tùy ý. Sheet Chuso sau khi nhập xong dữ liệu sẽ như hình dưới:
    [​IMG]

    3. Nhấn ALT + F11 để bắt đầu Visual Basic Editor

    Trong menu Insert chọn Module

    [​IMG]

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

    Mã:
    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 lại.

    5. Quay lại màn hình Excel và sử dụng hàm vừa tạo
    • Cách 1:
    Gọi hàm: =readnumber(Số cần chuyển)

    Ví dụ: =readnumber(1546426)
    • Cách 2:
    Gọi hàm: =readnumber(Địa chỉ ô cần chuyển)

    Ví dụ: =readnumber(A4)

    Trường hợp gặp phải giá trị trả về #NAME? trong Office 2007 thì bạn phải thực hiện theo các bước sau:

    Click Office Button -> Excel Options -> Trust Center -> Trust Center Settings

    [​IMG]

    Chọn Macro Settings -> Enable all macros (not recommended; potentially dangerous code can run)

    [​IMG]

    Chọn OK để hoàn tất.

    Hi vọng bài viết Hàm chuyển số sang chữ trong Excel giúp ích cho bạn trong nhiều công việc.
     
    Last edited by a moderator: Thg 11 4, 2017
  2. Đang tải...
Trả lời qua Facebook

Chia sẻ trang này