Excel nemá predvolenú funkciu, ktorá zobrazuje čísla ako anglické slová v hárku, ale túto možnosť môžete pridať prilepením nasledujúceho kódu funkcie SpellNumber do modulu VBA (Visual Basic for Applications). Táto funkcia umožňuje konvertovať sumy v dolároch a centoch na slová pomocou vzorca, takže 22,50 by sa čítalo ako Twenty-Two dolárov a päťdesiat centov. Môže to byť veľmi užitočné, ak používate Excel ako šablónu na tlač kontrol.
Ak chcete konvertovať číselné hodnoty do textového formátu bez toho, aby sa zobrazovali ako slová, použite namiesto toho funkciu TEXT .
Poznámka: Spoločnosť Microsoft poskytuje príklady programovania len na ilustráciu bez záruky vyjadrenej alebo implicitnej. To zahŕňa, ale nie je obmedzená na implicitné záruky obchodovateľnosti alebo vhodnosti na konkrétny účel. V tomto článku sa predpokladá, že poznáte programovací jazyk VBA a nástroje, ktoré sa používajú na vytváranie a ladenie postupov. Technickí inžinieri spoločnosti Microsoft môžu pomôcť vysvetliť funkčnosť konkrétneho postupu. Tieto príklady však nebudú upravovať tak, aby poskytovali ďalšie funkcie alebo vytvárali postupy na splnenie vašich konkrétnych požiadaviek.
Vytvorenie funkcie SpellNumber na konverziu čísel na slová
-
Na otvorenie programu Visual Basic Editor (VBE) použite klávesovú skratku Alt + F11.
Poznámka: Visual Basic Editor môžete otvoriť aj zobrazením karty Vývojár na páse s nástrojmi.
-
Kliknite na kartu Vložiť a vyberte položku Modul.
-
Skopírujte nasledujúce riadky kódu.
Poznámka: Tento kód, známy ako funkcia definovaná používateľom (UDF), automatizuje úlohu konverzie čísel na text v hárku.
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
-
Prilepte riadky kódu do okna Modul1 (Kód).
-
Stlačením kombinácie klávesov Alt + Q sa vrátite do Excelu. Funkcia SpellNumber je teraz pripravená na použitie.
Poznámka: Táto funkcia funguje len pre aktuálny zošit. Ak chcete túto funkciu použiť v inom zošite, zopakujte kroky na skopírovanie a prilepenie kódu v danom zošite.
Použitie funkcie SpellNumber v jednotlivých bunkách
-
Do bunky, v ktorej chcete zobraziť písané číslo, zadajte vzorec =SpellNumber(A1), kde A1 je bunka obsahujúca číslo, ktoré chcete skonvertovať. Môžete tiež manuálne zadať hodnotu ako =SpellNumber(22.50).
-
Stlačením klávesu Enter potvrďte vzorec.
Uloženie zošita s funkciou SpellNumber
Program Excel nemôže uložiť zošit s funkciami makier v štandardnom formáte zošita nepodporuného makra (.xlsx). Kliknutím na položku Súbor > Uložiť. sa otvorí dialógové okno projektu v jazyku VB. Kliknite na položku Nie.
Súbor môžete uložiť ako excelový Macro-Enabled zošit (.xlsm) a zachovať tak súbor v aktuálnom formáte.
-
Kliknite na položky Súbor > Uložiť ako.
-
Kliknite na rozbaľovaciu ponuku Uložiť vo formáte a vyberte položku Excel Macro-Enabled Zošit.
-
Kliknite na tlačidlo Uložiť.