Excel няма функция по подразбиране, която показва числата като английски думи в работен лист, но можете да добавите тази възможност, като поставите следния код на функция SpellNumber във VBA (Visual Basic for Applications) модул. Тази функция ви позволява да преобразувате сумите в долари и центове в думи с формула, така че 22,50 ще се четат като Twenty-Two долари и петдесет цента. Това може да е много полезно, ако използвате Excel като шаблон за печат на проверки.
Ако искате да преобразувате числови стойности в текстов формат, без да ги показвате като думи, използвайте функцията TEXT вместо това .
Забележка: Microsoft предоставя примери за програмиране само за илюстрация, без гаранция, изразена или подразбираща се. Това включва, но не се ограничава до подразбиращите се гаранции за продаваемост или годност за определена цел. Тази статия предполага, че сте запознати с езика за програмиране VBA и с инструментите, които се използват за създаване и отстраняване на грешки в процедурите. Инженерите по поддръжката на Microsoft могат да ви помогнат да обясните функционалността на определена процедура. Те обаче няма да променят тези примери, за да предоставят допълнителна функционалност, или да създават процедури, които да отговарят на Вашите конкретни изисквания.
Създаване на функцията SpellNumber за преобразуване на числа в думи
-
Използвайте клавишната комбинация Alt + F11, за да отворите Редактор на Visual Basic (VBE).
Забележка: Можете да отворите редактора на Visual Basic също и като покажете раздела "Разработчик" на лентата.
-
Щракнете върху раздела Вмъкване и след това върху Модул.
-
Копирайте следните редове код.
Забележка: Известен като функция, дефинирана от потребителя (UDF), този код автоматизира задачата за преобразуване на числа в текст в целия работен лист.
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
-
Поставете редовете код в полето Module1 (Code).
-
Натиснете Alt + Q , за да се върнете в Excel. Сега функцията SpellNumber е готова за използване.
Забележка: Тази функция работи само за текущата работна книга. За да използвате тази функция в друга работна книга, трябва да повторите стъпките, за да копирате и поставите кода в тази работна книга.
Използване на функцията SpellNumber в отделни клетки
-
Въведете формулата =SpellNumber(A1) в клетката, където искате да покажете написано число, където A1 е клетката, съдържаща числото, което искате да преобразувате. Можете също да въведете ръчно стойността, като например =SpellNumber(22,50).
-
Натиснете Enter , за да потвърдите формулата.
Записване на функцията SpellNumber в работната книга
Excel не може да запише работна книга с функции за макроси в стандартен формат на работна книга без макроси (.xlsx). Ако щракнете върху Файл > Запиши. Отваря се диалоговият прозорец VB проект . Щракнете върху Не.
Можете да запишете файла като работна книга на Excel Macro-Enabled (.xlsm ), за да запазите файла в текущия му формат.
-
Щракнете върху Файл > Запиши като.
-
Щракнете върху падащото меню Запиши като тип и изберете Excel Macro-Enabled работна книга.
-
Щракнете върху Запиши.