Đọc số thành chữ tiếng Anh trong Excel

Excel không có chức năng mặc định để chúng ta đọc số thành từ bằng tiếng Anh. Tuy nhiên, với sự trợ giúp của VBA, bạn có thể dễ dàng tạo hàm tự tạo này hoặc hàm này trong Excel giúp chúng ta chuyển đổi số thành chữ cái một cách nhanh chóng, đặc biệt trong trường hợp này, chúng ta sẽ đọc số lượng bằng chữ trong tiếng Anh.

Bài viết này sẽ không yêu cầu bạn phải biết VBA để có thể thực hiện chức năng này, nhưng trước khi bắt đầu, chúng ta sẽ cần biết cách mở trình soạn thảo VBA và sao chép mã vào đó. Vì vậy, nếu bạn chưa biết sử dụng mã VBA ở đâu trong bài viết này, hãy làm theo hướng dẫn trong bài viết sau:

Cách chạy Macro hoặc mã VBA trong Excel

Cách viết hàm đọc số thành chữ cái tiếng Anh trong Excel

  1. Đầu tiên, chúng ta sẽ cần mở Trình soạn thảo Visual Basic (VBE) bằng cách nhấn phím tắt ALT + F11
  2. Sau đó trong VBE, chọn menu Chèn, nhấp chuột Mô-đun
    cach-insert-module-in-vba-excel
  3. Sao chép và dán mã sau vào Mô-đun mới được tạo
    Option Explicit
    
    'Main Function
    
    Function SpellNumber(ByVal MyNumber)
        
        Dim Dollars, Cents, Temp
        
        Dim DecimalPlace, Count
        
        ReDim Place(9)  As String
        
        Place(2) = " Thousand "
        
        Place(3) = " Million "
        
        Place(4) = " Billion "
        
        Place(5) = " Trillion "
        
        ' String representation of amount.
        
        MyNumber = Trim(Str(MyNumber))
        
        ' Position of decimal place 0 if none.
        
        DecimalPlace = InStr(MyNumber, ".")
        
        ' Convert cents and set MyNumber to dollar amount.
        
        If DecimalPlace > 0 Then
            
            Cents = 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 Dollars = Temp & Place(Count) & Dollars
            
            If Len(MyNumber) > 3 Then
                
                MyNumber = Left(MyNumber, Len(MyNumber) - 3)
                
            Else
                
                MyNumber = ""
                
            End If
            
            Count = Count + 1
            
        Loop
        
        Select Case Dollars
            
            Case ""
                
                Dollars = "No Dollars"
                
            Case "One"
                
                Dollars = "One Dollar"
                
            Case Else
                
                Dollars = Dollars & " Dollars"
                
        End Select
        
        Select Case Cents
            
            Case ""
                
                Cents = " And No Cents"
                
            Case "One"
                
                Cents = " And One Cent"
                
            Case Else
                
                Cents = " And " & Cents & " Cents"
                
        End Select
        
        SpellNumber = Dollars & Cents
        
    End Function
    
    ' Converts a number from 100-999 into text
    
    Function GetHundreds(ByVal MyNumber)
        
        Dim Result      As String
        
        If Val(MyNumber) = 0 Then Exit Function
        
        MyNumber = Right("000" & MyNumber, 3)
        
        ' Convert the hundreds place.
        
        If Mid(MyNumber, 1, 1) <> "0" Then
            
            Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
            
        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
    
    ' Converts a number from 10 to 99 into text.
    
    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 = "Ten"
                
            Case 11: Result = "Eleven"
                
            Case 12: Result = "Twelve"
                
            Case 13: Result = "Thirteen"
                
            Case 14: Result = "Fourteen"
                
            Case 15: Result = "Fifteen"
                
            Case 16: Result = "Sixteen"
                
            Case 17: Result = "Seventeen"
                
            Case 18: Result = "Eighteen"
                
            Case 19: Result = "Nineteen"
                
            Case Else
                
        End Select
        
    Else        ' If value between 20-99...
        
        Select Case Val(Left(TensText, 1))
            
            Case 2: Result = "Twenty "
                
            Case 3: Result = "Thirty "
                
            Case 4: Result = "Forty "
                
            Case 5: Result = "Fifty "
                
            Case 6: Result = "Sixty "
                
            Case 7: Result = "Seventy "
                
            Case 8: Result = "Eighty "
                
            Case 9: Result = "Ninety "
                
            Case Else
                
        End Select
        
        Result = Result & GetDigit(Right(TensText, 1))
        
    End If
    
    GetTens = Result
    
    End Function
    
    ' Converts a number from 1 to 9 into text.
    
    Function GetDigit(Digit)
        
        Select Case Val(Digit)
            
            Case 1: GetDigit = "One"
                
            Case 2: GetDigit = "Two"
                
            Case 3: GetDigit = "Three"
                
            Case 4: GetDigit = "Four"
                
            Case 5: GetDigit = "Five"
                
            Case 6: GetDigit = "Six"
                
            Case 7: GetDigit = "Seven"
                
            Case 8: GetDigit = "Eight"
                
            Case 9: GetDigit = "Nine"
                
            Case Else: GetDigit = ""
                
        End Select
        
    End Function
    
    
  4. Sau khi sao chép đoạn mã trên và dán vào Mô-đun, bạn thường nhấn phím tắt Alt + Q để quay lại Excel
>>> Xem thêm:  Cách chèn và chạy mã VBA trong Excel 2010-2016, hướng dẫn cho người mới bắt đầu

Cách sử dụng chức năng đọc số thành chữ cái trong tiếng Anh viết bằng VBA

Để sử dụng hàm này để đọc các số thành các chữ cái, hãy nhập công thức

=SpellNumber(A1)

trong ô mà bạn muốn chuyển đổi số thành văn bản, với dữ liệu số được lưu trữ trong ô A1.

Tải game crack việt hoá tại: https://daominhha.com

Cách lưu hàm đọc số thành chữ cái để sử dụng sau này

Để tiếp tục sử dụng chức năng này để đọc số thành chữ cái cho lần sau, hãy lưu Tệp Excel chứa mã Macro này dưới dạng * .XLSM – Excel Macro-Enabled Workbook. Nếu bạn thường xuyên có nhu cầu sử dụng hàm này, hãy tham khảo bài viết sau để có thể sử dụng hàm này trên nhiều file Excel trên máy tính của mình:

Sổ làm việc Macro Cá nhân là gì, cách sử dụng mã VBA trong nhiều Tệp

Ngoài ra, cùng chủ đề đọc số thành chữ, sau đây là các bài viết khác mà bạn có thể quan tâm:

Cách dễ nhất để đọc số thành từ trong Excel và Google Trang tính

Công thức đọc số thành chữ có phần thập phân

Làm thế nào để xây dựng một công thức để đọc số tiền bằng từ trong Excel từ A đến Z

Đọc số thành từ bằng các hàm trong Excel (Tiếng Anh, Tiếng Việt …)

Nguồn : Blog hocexcel