Featured Posts

CS50 Python , Nutrition Facts Table

Image
Nutrition Facts: Python Practice for Beginners Nutrition Facts Table for Python Practice Welcome to this comprehensive guide for Python beginners! If you are learning how to work with lists, dictionaries, and loops, this post will help you build practical skills using a real-world example: nutrition facts for fruits. Understanding how to organize and manipulate data is a key part of programming, and this exercise will give you hands-on experience. Below is a sample table of fruits and their calorie values, formatted as a Python list of dictionaries. This structure is ideal for coding exercises, projects, or even building your own nutrition calculator. You can expand this list, add new fruits, or use it as a foundation for more advanced Python tasks. Python List of Dictionaries Example: fruits = [ {'name': 'Apple', 'calories': 130}, {'name': 'Avocado', 'calories': 50}, {'name': 'Banana', 'ca...

Convert a Currency Number to Words in Excel

Convert amount from Number to Words

Convert a Currency Number to Words in Excel
Convert a Currency Number to Words in Excel 

Step by Step tutorial

This VBA code will enable you to convert any amount in an excel cell to words amount with 6 currencies very easily. Steps are below:

1- Open an Excel file and press Alt + F11

2- Click Insert, Module

Alt + F11
Alt + F11

3- Copy below text and paste it in the module

Option Explicit
'https://ilpd-ms.blogspot.com/2020/03/how-to-convert-amount-from-number-to.html
Function SpellNumberEDP(ByVal MyNumber, Optional MyCurrency As String = "")
    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
    Dim str_amount, str_amounts
    Dim str_cent, str_cents
    Select Case UCase(MyCurrency)
    Case "SAR"
        str_amount = "Riyal" ' Riyal can be changed to "Saudi Riyal"
        str_amounts = "Riyals"
        str_cent = "Halala"
        str_cents = "Halalas"
    Case "AED"
        str_amount = "Dirham"
        str_amounts = "Dirhams"
        str_cent = "Fil"
        str_cents = "Fils"
    Case "GBP"
        str_amount = "Pound"
        str_amounts = "Pounds"
        str_cent = "Penny"
        str_cents = "Pence"
    Case "EUR"
        str_amount = "Euro"
        str_amounts = "Euros"
        str_cent = "Cent"
        str_cents = "Cents"
    Case "YEN"
        str_amount = "Yen"
        str_amounts = "Yens"
        str_cent = "Sen"
        str_cents = "Sens"
    Case Else:
        str_amount = "Dollar"
        str_amounts = "Dollars"
        str_cent = "Cent"
        str_cents = "Cents"
    End Select
    Select Case Dollars
    Case ""
        Dollars = "No " & str_amounts
    Case "One"
        Dollars = "One " & str_amount
    Case Else
        Dollars = Dollars & " " & str_amounts
    End Select
    Select Case cents
    Case ""
        cents = " and No " & str_cents
    Case "One"
        cents = " and One " & str_cent
    Case Else
        cents = " and " & cents & " " & str_cents
    End Select
    SpellNumberEDP = 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, 11) <> "0" Then
        Result = GetDigit(Mid(MyNumber, 11)) & " Hundred "
    End If
' Convert the tens and ones place.
    If Mid(MyNumber, 21) <> "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)) ' Retrieve ones place.
    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- Close the Visual basic Window and return to Excel

Save file as micro-enabled
Save file as micro-enabled

5- A dialog box will appear; “The following features

cannot be saved in macro-free workbook”.Save the workbook as Macro Enabled Workbook. 

6- Click “No”.

7- Choose Save As Type = Excel macro-enabled workbook

Now you can choose between 6 currencies depending on how to write your formula as below - Assuming that the cell with number is (A1)

  • For  US Dollars 

=SpellNumberEDP(A1) ⇒ note: only "A1" and nothing between quotes.

  • For European Euros (EUR)  ⇒ note: you must write "EUR" between quotes to get Euro currency.
=SpellNumberEDP(A1,"EUR")
  • For Japanese Yen (YEN  ⇒ note: you must write "Yen" between quotes to get Yen currency.
=SpellNumberEDP(A1,"YEN")
  • For English Pounds (GBP⇒ note: you must write "GBP" between quotes to get pounds currency.
=SpellNumberEDP(A1,"GBP")
  • For Saudi Riyal (SAR) ⇒ note: you must write "SAR" between quotes to get Saudi currency.

=SpellNumberEDP(A1,"SAR")

  • For UAE Dirham (AED) ⇒ note: you must write "AED" between quotes to get Dirham currency.

=SpellNumberEDP(A1,"AED")


Note: You can change the output inside the code. I changed it from :"Riyal" to "Saudi Riyal" as follows:

Case "SAR"
str_amount = "Saudi Riyal" str_amounts =
str_amounts = "Saudi Riyals"

Here's how to do it



 

Source: Original Post

Comments

Post a Comment

Your opinion matters, your voice makes us proud and happy. Your words are our motivation.

Popular posts from this blog

فرصتك للدراسة في ألمانيا: منحة ممولة بالكامل لطلاب الدراسات العليا

How to Deactivate Screen Reader in Kali Linux

Murphy's Law: Expect the Unexpected

Python 3.2.1.14 LAB: Essentials of the while loop

Data Analysis Roadmap 2026: From Excel Lover to Python-Powered Analyst