Excelis pole vaikefunktsiooni, mis kuvaks töölehel arve ingliskeelsete sõnadena, kuid selle võimaluse lisamiseks kleepige järgmine funktsioonikood SpellNumber moodulisse VBA (Visual Basic for Applications). See funktsioon võimaldab teil teisendada dollari ja senti summad valemiga sõnadeks, nii et 22,50 loetakse Twenty-Two dollarid ja viiskümmend senti. See võib olla väga kasulik, kui kasutate Excelit tšekkide printimiseks mallina.
Kui soovite arvväärtused teisendada tekstivormingusse ilma neid sõnadena kuvamata, kasutage selle asemel funktsiooni TEXT .
Märkus.: Microsoft pakub programmeerimise näiteid ainult illustreerimiseks, ilma et garantii oleks väljendatud või kaudselt. See hõlmab kaubastatavuse või kindlaks otstarbeks sobivuse kaudseid garantiisid, kuid mitte ainult. Selles artiklis eeldatakse, et olete tuttav VBA programmeerimiskeelega ning tööriistadega, mida kasutatakse protseduuride loomiseks ja silumiseks. Microsofti tugiteenuste insenerid saavad aidata selgitada konkreetse toimingu funktsionaalsust. Siiski ei muuda nad neid näiteid, et pakkuda teie vajadustele vastavaid lisafunktsioone ega koostada protseduure.
Arvude sõnadeks teisendamiseks funktsiooni SpellNumber loomine
-
Visual Basic Editori (VBE) avamiseks kasutage klahvikombinatsiooni Alt + F11 .
Märkus.: Visual Basic Editori avamiseks saate lindil kuvada ka menüü Arendaja .
-
Klõpsake menüüd Lisa ja seejärel nuppu Moodul.
-
Kopeerige järgmised koodiread.
Märkus.: See kood, mida nimetatakse kasutaja määratletud funktsiooniks (UDF), automatiseerib kogu töölehel arvude tekstiks teisendamise toimingu.
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
-
Kleepige koodiread väljale Moodul1 (kood).
-
Excelisse naasmiseks vajutage klahvikombinatsiooni Alt + Q . Funktsioon SpellNumber on nüüd kasutamiseks valmis.
Märkus.: See funktsioon töötab ainult praeguses töövihikus. Selle funktsiooni kasutamiseks mõnes muus töövihikus tuleb koodi kopeerimiseks ja sellesse kleepimiseks toiminguid korrata.
Funktsiooni SpellNumber kasutamine üksikutes lahtrites
-
Tippige valem =SpellNumber(A1) lahtrisse, kus soovite kuvada kirjutatud arvu, kus A1 on teisendatavat arvu sisaldav lahter. Võite ka käsitsi tippida väärtuse nagu =SpellNumber(22,50).
-
Valemi kinnitamiseks vajutage sisestusklahvi (Enter).
Funktsiooni SpellNumber töövihiku salvestamine
Excel ei saa salvestada makrofunktsioonidega töövihikut standardses makrovabas töövihikuvormingus (.xlsx). Kui klõpsate nuppu Fail > Salvesta. Avatakse VB-projekti dialoogiboks. Klõpsake nuppu Ei.
Faili saate salvestada Exceli Macro-Enabled töövihikuna (.xlsm), et hoida fail praeguses vormingus.
-
Klõpsake menüüd Fail ja siis käsku Salvesta nimega.
-
Klõpsake rippmenüüd Salvestustüüp ja valige Excel Macro-Enabled töövihik.
-
Klõpsake nuppu Salvesta.