Excel nima privzete funkcije, ki prikaže številke kot angleške besede na delovnem listu, vendar lahko to možnost dodate tako, da prilepite to kodo funkcije SpellNumber v modul VBA (VBA). S to funkcijo lahko zneske v dolarjih in centih pretvorite v besede s formulo, tako da jih je 22,50 prebralo kot Twenty-Two Dollars and Fifty Cents. To je lahko zelo uporabno, če uporabljate Excel kot predlogo za tiskanje preverjanj.
Če želite številske vrednosti pretvoriti v obliko besedila, ne da bi jih prikazali kot besede, uporabite funkcijo TEXT .
Opomba: Microsoft ponuja primere programiranja le za ilustracije, brez jamstva, ki ni izraženo ali naznačeno. To vključuje, vendar ni omejeno na naznačena jamstva glede primernosti za prodajo ali primernosti za določen namen. V tem članku je predvideno, da poznate programski jezik VBA in orodja, ki se uporabljajo za ustvarjanje in iskanje napak v postopkih. Inženirji Microsoftove podpore vam lahko pomagajo razložiti delovanje določenega postopka. Vendar pa ti primeri ne bodo spremenili tako, da bi zagotovili dodano funkcionalnost, ali gradnji postopkov za izpolnjevanje vaših posebnih zahtev.
Ustvarjanje funkcije SpellNumber za pretvorbo številk v besede
-
Urejevalnik za Visual Basic (VBE) odprete z bližnjico na tipkovnici Alt + F11 .
Opomba: Urejevalnik za Visual Basic lahko odprete tudi tako, da na traku odprete zavihek »Razvijalec«.
-
Kliknite zavihek Vstavljanje in nato Modul.
-
Kopirajte te vrstice kode.
Opomba: Ta koda , znana kot uporabniško določena funkcija (UDF), avtomatizira opravilo pretvarjanja števil v besedilo na celotnem delovnem listu.
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
-
Vrstice kode prilepite v polje Modul1 (koda).
-
Pritisnite Alt + Q, da se vrnete v Excel. Funkcija SpellNumber je zdaj pripravljena za uporabo.
Opomba: Ta funkcija deluje le za trenutni delovni zvezek. Če želite uporabiti to funkcijo v drugem delovnem zvezku, ponovite korake, da kopirate in prilepite kodo v ta delovni zvezek.
Uporaba funkcije SpellNumber v posameznih celicah
-
Vnesite formulo =SpellNumber(A1) v celico, kjer želite prikazati zapisano število, kjer je A1 celica s številom, ki ga želite pretvoriti. Vrednost lahko vnesete tudi ročno, na primer =SpellNumber(22.50).
-
Pritisnite tipko Enter , da potrdite formulo.
Shranjevanje delovnega zvezka s funkcijo SpellNumber
Excel ne more shraniti delovnega zvezka s funkcijami makrov v standardni obliki zapisa delovnega zvezka brez makrov (.xlsx). Če kliknete Shrani >shrani. Odpre se pogovorno okno Projekt VB . Kliknite Ne.
Datoteko lahko shranite kot Excelov delovni Macro-Enabled (.xlsm), da ohranite trenutno obliko zapisa datoteke.
-
Kliknite Datoteka > Shrani kot.
-
Kliknite spustni meni Shrani kot vrsto in izberite Excel Macro-Enabled delovni zvezek.
-
Kliknite Shrani.