Excel har ikke en standardfunktion, der viser tal som engelske ord i et regneark, men du kan tilføje denne funktion ved at indsætte følgende funktionskode SpellNumber i et VBA-modul (Visual Basic for Applications). Med denne funktion kan du konvertere beløb i kroner og øre til ord med en formel, så 22,50 ville blive læst som Twenty-Two Dollars og Fifty Cents. Dette kan være meget nyttigt, hvis du bruger Excel som skabelon til at udskrive tjek.
Hvis du vil konvertere numeriske værdier til tekstformat uden at vise dem som ord, skal du bruge funktionen TEKST i stedet.
Bemærk!: Microsoft leverer kun programmeringseksempler til illustration uden garanti, hverken udtrykt eller underforstået. Dette omfatter, men er ikke begrænset til, underforståede garantier for salgbarhed eller egnethed til et bestemt formål. I denne artikel antages det, at du er bekendt med VBA-programmeringssproget og med de værktøjer, der bruges til at oprette og foretage fejlfinding af procedurer. Microsofts supportteknikere kan hjælpe med at forklare funktionaliteten af en bestemt procedure. De vil dog ikke ændre disse eksempler for at give ekstra funktionalitet eller konstruere procedurer, der opfylder dine specifikke krav.
Opret SpellNumber-funktionen for at konvertere tal til ord
-
Brug tastaturgenvejen Alt + F11 til at åbne Visual Basic Editor (VBE).
Bemærk!: Du kan også åbne Visual Basic Editor ved at få vist fanen Udvikler på båndet.
-
Klik på fanen Insert, og klik derefter på Module.
-
Kopiér de følgende kodelinjer.
Bemærk!: Denne kode kaldes en brugerdefineret funktion (UDF) og automatiserer opgaven med at konvertere tal til tekst i hele regnearket.
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)) ' 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
-
Indsæt kodelinjerne i feltet Module1 (code).
-
Tryk på Alt +Q for at vende tilbage til Excel. Funktionen SpellNumber er nu klar til brug.
Bemærk!: Denne funktion fungerer kun for den aktuelle projektmappe. Hvis du vil bruge denne funktion i en anden projektmappe, skal du gentage trinnene for at kopiere og indsætte koden i projektmappen.
Brug funktionen SpellNumber i individuelle celler
-
Skriv formlen =SpellNumber(A1) i den celle, hvor du vil have vist et skrevet tal, hvor A1 er den celle, der indeholder det tal, du vil konvertere. Du kan også skrive værdien manuelt, f.eks. =SpellNumber(22,50).
-
Tryk på Enter for at bekræfte formlen.
Gem din projektmappe med SpellNumber-funktionen
Excel kan ikke gemme en projektmappe med makrofunktioner i det almindelige projektmappeformat uden makroer (.xlsx). Hvis du klikker på Filer > Gem. Åbnes der en VB-projekt-dialogboks. Klik på Nej.
Du kan gemme filen som en Excel Macro-Enabled-projektmappe (.xlsm) for at bevare filen i det aktuelle format.
-
Klik på Filer > Gem som.
-
Klik på rullemenuen Filtype , og vælg Excel Macro-Enabled projektmappe.
-
Klik på Gem.