Excel har ikke en standardfunksjon som viser tall som engelske ord i et regneark, men du kan legge til denne funksjonen ved å lime inn følgende spellnumber-funksjonskode i en VBA-modul (Visual Basic for Applications). Denne funksjonen lar deg konvertere dollar og cent beløp til ord med en formel, så 22,50 ville leses som Twenty-Two dollar og femti cent. Dette kan være svært nyttig hvis du bruker Excel som mal til å skrive ut kontroller.
Hvis du vil konvertere numeriske verdier til tekstformat uten å vise dem som ord, bruker du TEKST-funksjonen i stedet.
Obs!: Microsoft tilbyr programmeringseksempler bare for illustrasjon, uten garanti enten uttrykt eller underforstått. Dette omfatter, men er ikke begrenset til, de underforståtte garantiene om salgbarhet eller egnethet for et bestemt formål. Denne artikkelen antar at du er kjent med VBA-programmeringsspråket, og med verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsofts kundestøtteteknikere kan bidra til å forklare funksjonaliteten til en bestemt fremgangsmåte. De vil imidlertid ikke endre disse eksemplene for å gi ekstra funksjonalitet, eller konstruere prosedyrer for å oppfylle dine spesifikke krav.
Opprett SpellNumber-funksjonen for å konvertere tall til ord
-
Bruk hurtigtasten ALT+F11 for å åpne Visual Basic Redaktør (VBE).
Obs!: Du kan også få tilgang til Visual Basic-Redaktør ved å vise Utvikler-fanen på båndet.
-
Klikk sett inn-fanen , og klikk Modul.
-
Kopier følgende kodelinjer.
Obs!: Denne koden kalles UDF (User Defined Function), og automatiserer oppgaven med å konvertere tall 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
-
Lim inn kodelinjene i Modul1-boksen (kode ).
-
Trykk ALT+Q for å gå tilbake til Excel. SpellNumber-funksjonen er nå klar til bruk.
Obs!: Denne funksjonen fungerer bare for gjeldende arbeidsbok. Hvis du vil bruke denne funksjonen i en annen arbeidsbok, må du gjenta trinnene for å kopiere og lime inn koden i arbeidsboken.
Bruke SpellNumber-funksjonen i individuelle celler
-
Skriv inn formelen =SpellNumber(A1) i cellen der du vil vise et skrevet tall, der A1 er cellen som inneholder tallet du vil konvertere. Du kan også skrive inn verdien manuelt, for eksempel =SpellNumber(22.50).
-
Trykk ENTER for å bekrefte formelen.
Lagre arbeidsboken for SpellNumber-funksjonen
Excel kan ikke lagre en arbeidsbok med makrofunksjoner i standard makrofritt arbeidsbokformat (.xlsx). Hvis du klikker Fil > Lagre. Dialogboksen VB-prosjekt åpnes. Klikk Nei.
Du kan lagre filen som en Excel Macro-Enabled-arbeidsbok (XLSM) for å beholde filen i gjeldende format.
-
Klikk Fil > Lagre som.
-
Klikk rullegardinmenyen Filtype , og velg Excel Macro-Enabled Arbeidsbok.
-
Klikk på Lagre.