Excel перетворити число в текст

Як в Excel перетворити число в текст

На жаль, в Excel не має стандартної функції для перетворення числа в текст. Тому якщо у вас виникла необхідність написати якесь число прописом, то вам потрібно буде створити власну функцію за допомогою VBA, або ж скористатися вже готовим кодом з цього матеріалу.

Написання числа прописом в Excel

Для того, щоб додати в Книгу Excel функцію для написання числа текстом, виконайте наступні дії:

  1. Відкрийте або створіть Книгу Excel.
  2. Зробіть клік правою кнопкою миші по Аркушу, і у меню що з’явилося, оберіть пункт «Перегляд коду» (або натисніть сполучення клавіш Alt+F11).
  3. Створіть новий модуль. Для цього у вікні проектів VBA зробіть клік правою кнопкою миші по вашому проекту (в моєму випадку це VBA Project (Книга 1)) і у меню що з’явилося оберіть Insert → Module.
  4. У вікно редактору коду VBA вставте наступний код:
Function SUMINWORDS(n As Double, curr As Variant, kop As Variant) As String
 Dim Nums1, Nums2, Nums3, Nums4 As Variant
   
 Nums0 = Array("", "одна ", "дві ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
 Nums1 = Array("", "один ", "два ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
 Nums2 = Array("", "десять ", "двадцять ", "тридцять ", "сорок ", "п'ятдесят ", "шістдесят ", "сімдесят ", _
                        "вісімдесят ", "дев'яносто ")
 Nums3 = Array("", "сто ", "двісті ", "триста ", "чотириста ", "п'ятсот ", "шістсот ", "сімсот ", _
                        "вісімсот ", "дев'ятсот ")
 Nums4 = Array("", "одна ", "дві ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
 Nums5 = Array("десять ", "одинадцять ", "дванадцять ", "тринадцять ", "чотирнадцять ", _
                        "п'ятнадцять ", "шістнадцять ", "сімнадцять ", "вісімнадцять ", "дев'ятнадцять ")
    
 If n < 1 Then
   SUMINWORDS = "Нуль " & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
     
If curr = "" Then
   SUMINWORDS = "Нуль"
End If
        
   Exit Function
 End If
 'розділяємо число на розряди, використовуючи допоміжну функцію Class
 ed = Class(n, 1)
 dec = Class(n, 2)
 sot = Class(n, 3)
 tys = Class(n, 4)
 dectys = Class(n, 5)
 sottys = Class(n, 6)
 mil = Class(n, 7)
 decmil = Class(n, 8)
 sotmil = Class(n, 9)
 bil = Class(n, 10)
     
'перевіряємо мільярди
   
 Select Case bil
   
Case 1
     bil_txt = Nums1(bil) & "мільярд "
Case 2 To 4
     bil_txt = Nums1(bil) & "мільярди "
Case 5 To 9
     bil_txt = Nums1(bil) & "мільярдів "
            
 End Select
     
'перевіряємо мільйони
   
 Select Case sotmil
   Case 1 To 9
     sotmil_txt = Nums3(sotmil)
 End Select
    
 Select Case decmil
   Case 1
     mil_txt = Nums5(mil) & "мільйонів "
     GoTo www
   Case 2 To 9
     decmil_txt = Nums2(decmil)
 End Select
   
 Select Case mil
 Case 0
     If decmil > 0 Then mil_txt = Nums4(mil) & "мільйонів "
   Case 1
     mil_txt = Nums1(mil) & "мільйон "
   Case 2, 3, 4
     mil_txt = Nums1(mil) & "мільйона "
   Case 5 To 9
     mil_txt = Nums1(mil) & "мільйонів "
 End Select
   
 If decmil = 0 And mil = 0 And sotmil <> 0 Then sotmil_txt = sotmil_txt & "мільйонів "
   
www:
 sottys_txt = Nums3(sottys)
 
 'перевіряємо тисячі
 Select Case dectys
   Case 1
     tys_txt = Nums5(tys) & "тисяч "
     GoTo eee
   Case 2 To 9
     dectys_txt = Nums2(dectys)
 End Select
   
 Select Case tys
   Case 0
     If dectys > 0 Then tys_txt = Nums4(tys) & "тисяч "
   Case 1
     tys_txt = Nums4(tys) & "тисячa "
   Case 2, 3, 4
     tys_txt = Nums4(tys) & "тисячі "
   Case 5 To 9
     tys_txt = Nums4(tys) & "тисяч "
 End Select
   
 If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & " тисяч "
   
eee:
 sot_txt = Nums3(sot)
 'перевіряємо десятки
 Select Case dec
   Case 1
     ed_txt = Nums5(ed)
     GoTo rrr
   Case 2 To 9
     dec_txt = Nums2(dec)
 End Select
    
 ed_txt = Nums0(ed)
  
rrr:
'формуємо підсумковий рядок
   
 SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
 & tys_txt & sot_txt & dec_txt & ed_txt & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
  
If curr = "" Then
   SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
 & tys_txt & sot_txt & dec_txt & ed_txt
 End If
   
 SUMINWORDS = UCase(Mid(SUMINWORDS, 1, 1)) + Mid(SUMINWORDS, 2)
   
End Function
    
'допоміжна функція для виділення з числа розрядів
Private Function Class(M, I)
  Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))
End Function

Використання функції для перетворення числа в текст в Excel

Скористатися функцією яку ми додали в Книгу Excel можна декількома способами.

Перший спосіб – через Вставлення функцій

  1. Натисніть по іконці «Вставлення функцій» яка знаходиться зліва від «Рядка формул» (або натисніть сполучення клавіш Shift+F3).
  2. У вікні що з’явилося, зі списку «Категорія» оберіть «Визначені користувачем».
  3. В полі «Виберіть функції» оберіть ту функцію яку ми додали раніше (SUMINWORDS) і натисніть OK.
  4. Оскільки Функція SUMINWORDS має три аргумента, то вам потрібно їх зазначити.
    • Перший аргумент – це число, тобто тут нам потрібно зазначити комірку з числом яке необхідно перетворити в текст.
    • Другий аргумент – це назва цілих. Тут можна вказати валюту, або будь-яке інше слово яке буде написано після цілої частини числа. Якщо вам непотрібно нічого писати після цілого числа, то вставте тут пусте значення за допомогою відкритих і закритих лапок.
    • Третій аргумент – це назва сотих. Тут можна вказати копійки, центи та ін.

Другий спосіб – ввести формулу вручну

В рядку формул введіть

=SUMINWORDS(аргумент1; аргумент2; аргумент3)

Наприклад:

=SUMINWORDS(A1; "грн.";"коп.")

або

=SUMINWORDS(A2; "";"")

Відео як зробити суму прописом в Excel

Запитання та відповіді щодо написання суми прописом в Excel

Main Menu