"Excel" neturi numatytosios funkcijos, kuri darbalapyje rodo skaičius kaip angliškus žodžius, tačiau galite įtraukti šią galimybę įklijuodami šį SpellNumber funkcijos kodą į VBA ("Visual Basic for Applications") modulį. Ši funkcija leidžia konvertuoti dolerio ir cento sumas į žodžius naudojant formulę, todėl 22,50 būtų perskaityta kaip Twenty-Two doleriais ir penkiasdešimt centų. Tai gali būti labai naudinga, jei čekius spausdinate naudodami "Excel" kaip šabloną.
Jei norite konvertuoti skaitines reikšmes į teksto formatą nerodydami jų kaip žodžių, naudokite funkciją TEXT .
Pastaba: "Microsoft" pateikia programavimo pavyzdžius tik iliustracijoms, be išreikštos arba numanomos garantijos. Tai apima, bet neapsiriboja, numanomas garantijas dėl tinkamumo parduoti ar tinkamumo konkrečiam tikslui. Šiame straipsnyje daroma prielaida, kad esate susipažinę su VBA programavimo kalba ir įrankiais, kurie naudojami procedūroms kurti ir derinti. "Microsoft" palaikymo inžinieriai gali padėti paaiškinti konkrečios procedūros funkcijas. Tačiau jie nekeis šių pavyzdžių, kad suteiktų papildomų funkcinių galimybių arba sukurtų procedūras, atitinkančias jūsų konkrečius reikalavimus.
SpellNumber funkcijos kūrimas skaičiams į žodžius konvertuoti
-
Norėdami atidaryti "Visual Basic" rengyklę (VBE), naudokite sparčiuosius klavišus Alt + F11 .
Pastaba: Taip pat galite pasiekti „Visual Basic“ rengyklę rodydami programų kūrėjo skirtuką juostelėje.
-
Spustelėkite skirtuką Įterpimas, tada spustelėkite Modulis.
-
Nukopijuokite šias kodo eilutes.
Pastaba: Šis kodas, vadinamas vartotojo apibrėžta funkcija (UDF), automatizuoja skaičių konvertavimo į tekstą užduotį visame darbalapyje.
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
-
Įklijuokite kodo eilutes į lauką Modulis1 (kodas).
-
Paspauskite Alt + Q , kad grįžtumėte į "Excel". Dabar SpellNumber funkcija paruošta naudoti.
Pastaba: Ši funkcija veikia tik dabartinėje darbaknygėje. Norėdami naudoti šią funkciją kitoje darbaknygėje, turite pakartoti veiksmus, kad nukopijuotumėte ir įklijuotumėte kodą į tą darbaknygę.
SpellNumber funkcijos naudojimas atskiruose langeliuose
-
Įveskite formulę =SpellNumber(A1) į langelį, kuriame norite rodyti parašytą skaičių, kur A1 yra langelis, kuriame yra norimas konvertuoti skaičius. Taip pat galite rankiniu būdu įvesti reikšmę, pvz., =SpellNumber(22.50).
-
Paspauskite "Enter ", kad patvirtintumėte formulę.
Darbaknygės su SpellNumber funkcija įrašymas
Excel negali įrašyti darbaknygės su makrokomandų funkcijomis standartiniu darbaknygės be makrokomandų formatu (.xlsx). Jei spustelėsite Failas > Įrašyti. Atidaromas VB projekto dialogo langas. Spustelėkite Ne.
Galite įrašyti failą kaip "Excel" Macro-Enabled darbaknygę (.xlsm ), kad išlaikytumėte dabartinį failo formatą.
-
Spustelėkite Failas > Įrašyti kaip.
-
Spustelėkite išplečiamąjį meniu Įrašyti kaip tipą ir pasirinkite "Excel" Macro-Enabled darbaknygė.
-
Spustelėkite Įrašyti.