Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

Excel няма функция по подразбиране, която показва числата като английски думи в работен лист, но можете да добавите тази възможност, като поставите следния код на функция SpellNumber във VBA (Visual Basic for Applications) модул. Тази функция ви позволява да преобразувате сумите в долари и центове в думи с формула, така че 22,50 ще се четат като Twenty-Two долари и петдесет цента. Това може да е много полезно, ако използвате Excel като шаблон за печат на проверки.

Ако искате да преобразувате числови стойности в текстов формат, без да ги показвате като думи, използвайте функцията TEXT вместо това .

Забележка: Microsoft предоставя примери за програмиране само за илюстрация, без гаранция, изразена или подразбираща се. Това включва, но не се ограничава до подразбиращите се гаранции за продаваемост или годност за определена цел. Тази статия предполага, че сте запознати с езика за програмиране VBA и с инструментите, които се използват за създаване и отстраняване на грешки в процедурите. Инженерите по поддръжката на Microsoft могат да ви помогнат да обясните функционалността на определена процедура. Те обаче няма да променят тези примери, за да предоставят допълнителна функционалност, или да създават процедури, които да отговарят на Вашите конкретни изисквания.

Създаване на функцията SpellNumber за преобразуване на числа в думи

  1. Използвайте клавишната комбинация Alt + F11, за да отворите Редактор на Visual Basic (VBE).

    Забележка: Можете да отворите редактора на Visual Basic също и като покажете раздела "Разработчик" на лентата.

  2. Щракнете върху раздела Вмъкване и след това върху Модул.

    В менюто "Insert" (Вмъкване) щракнете върху "Module" (Модул).
  3. Копирайте следните редове код.

    Забележка: Известен като функция, дефинирана от потребителя (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
  4. Поставете редовете код в полето Module1 (Code).

    Код, поставен в полето Module1 (Code).
  5. Натиснете Alt + Q , за да се върнете в Excel. Сега функцията SpellNumber е готова за използване.

    Забележка: Тази функция работи само за текущата работна книга. За да използвате тази функция в друга работна книга, трябва да повторите стъпките, за да копирате и поставите кода в тази работна книга.

Най-горе на страницата

Използване на функцията SpellNumber в отделни клетки

  1. Въведете формулата =SpellNumber(A1) в клетката, където искате да покажете написано число, където A1 е клетката, съдържаща числото, което искате да преобразувате. Можете също да въведете ръчно стойността, като например =SpellNumber(22,50).

  2. Натиснете Enter , за да потвърдите формулата.

Най-горе на страницата

Записване на функцията SpellNumber в работната книга

Excel не може да запише работна книга с функции за макроси в стандартен формат на работна книга без макроси (.xlsx). Ако щракнете върху Файл > Запиши. Отваря се диалоговият прозорец VB проект . Щракнете върху Не.

В диалоговия прозорец на VB Project щракнете върху "No" (Не).

Можете да запишете файла като работна книга на Excel Macro-Enabled (.xlsm ), за да запазите файла в текущия му формат.

  1. Щракнете върху Файл > Запиши като.

  2. Щракнете върху падащото меню Запиши като тип и изберете Excel Macro-Enabled работна книга.

  3. Щракнете върху Запиши.

Най-горе на страницата

Вж. също

TEXT функция

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×