powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сумма прописью в Excele
4 сообщений из 4, страница 1 из 1
Сумма прописью в Excele
    #34394789
AlexanderKR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это уже давно заезженная тема, но все-таки подскажите
для особо одаренных, как можно получить сумму прописью
на определенной клетке рабочего листа.
Пробовал вариант с библиотекой:

/topic/207364&hl=%f1%f3%ec%ec%e0+%ef%f0%ee%ef%e8%f1%fc%fe

Красиво, но копейки не показывает.
Все остальные дают функции, но как конкретно
получив данные из ячейки (например) C5 обработать
их и вставить строку в ячейку F5 - такого нет.
Помогите, если не трудно.
...
Рейтинг: 0 / 0
Сумма прописью в Excele
    #34394983
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот например в ячейке A1 напишешь число.
Выполнишь Макрос1 , и в ячейке B1 появится текст с копейками
Но число должно быть менее 1 миллиарда

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
Sub Макрос1()
    Sheets("Лист1").Select
    a123 = Range("A1").Value
    Range("B1").Value = СуммаПрописью(a123)
End Sub



Function Десятки(Разряд As Long) As String

    Select Case Разряд
         Case  2 
            Десятки = "двадцать "
         Case  3 
            Десятки = "тридцать "
         Case  4 
            Десятки = "сорок "
         Case  5 
            Десятки = "пятьдесят "
         Case  6 
            Десятки = "шестьдесят "
         Case  7 
            Десятки = "семьдесят "
         Case  8 
            Десятки = "восемьдесят "
         Case  9 
            Десятки = "девяносто "
    End Select

End Function

Function Единицы(Разряд As Long, Род As String) As String

    Select Case Разряд
        Case  1 
            If Род = "Мужской" Then
                Единицы = "один "
            Else
                Единицы = "одна "
            End If
        Case  2 
            If Род = "Мужской" Then
                Единицы = "два "
            Else
                Единицы = "две "
            End If
        Case  3 
            Единицы = "три "
        Case  4 
            Единицы = "четыре "
        Case  5 
            Единицы = "пять "
        Case  6 
            Единицы = "шесть "
        Case  7 
            Единицы = "семь "
        Case  8 
            Единицы = "восемь "
        Case  9 
            Единицы = "девять "
        Case  10 
            Единицы = "десять "
        Case  11 
            Единицы = "одиннадцать "
        Case  12 
            Единицы = "двенадцать "
        Case  13 
            Единицы = "тринадцать "
        Case  14 
            Единицы = "четырнадцать "
        Case  15 
            Единицы = "пятнадцать "
        Case  16 
            Единицы = "шестнадцать "
        Case  17 
            Единицы = "семнадцать "
        Case  18 
            Единицы = "восемнадцать "
        Case  19 
            Единицы = "девятнадцать "

    End Select

End Function


Function Миллионы(Разряд As Long) As String

    If Разряд =  1  Then
        Миллионы = "миллион "
    ElseIf Разряд >  1  And Разряд <  5  Then
        Миллионы = "миллиона "
    Else
        Миллионы = "миллионов "
    End If

End Function

Function Рубли(Разряд As Long) As String
    
    If Разряд =  1  Then
        Рубли = "рубль"
    ElseIf Разряд >  1  And Разряд <  5  Then
        Рубли = "рубля"
    Else
        Рубли = "рублей"
    End If

End Function

Function Сотни(Разряд As Long) As String
    
    Select Case Разряд
         Case  1 
            Сотни = "сто "
         Case  2 
            Сотни = "двести "
         Case  3 
            Сотни = "триста "
         Case  4 
            Сотни = "четыреста "
         Case  5 
            Сотни = "пятьсот "
         Case  6 
            Сотни = "шестьсот "
         Case  7 
            Сотни = "семьсот "
         Case  8 
            Сотни = "восемьсот "
         Case  9 
            Сотни = "девятьсот "
    End Select

End Function

Function СуммаПрописью(СуммаСчета As Currency) As String
Dim Группа As Long, Разряд As Long, Длина As Integer
Dim Пропись As String, число As String, целое_число As Long, коп As String, копейки As String
    целое_число = Val(СуммаСчета)
    Сумма = целое_число
    Остаток = Сумма
    
    число = Format(СуммаСчета, "000000000.00")
    
    Группа = Остаток \  1000000 
    If Группа <>  0  Then
        Разряд = Группа \  100 
        Пропись = Пропись & Сотни(Разряд)
        Остаток = Остаток - Разряд *  100  *  1000000 
        Группа = Группа - Разряд *  100 

        If Группа >  19  Then
            Разряд = Группа \  10 
            Пропись = Пропись & Десятки(Разряд)
            Остаток = Остаток - Разряд *  10  *  1000000 
            Группа = Группа - Разряд *  10 
        End If

        Разряд = Группа
        Пропись = Пропись & Единицы(Разряд, "Мужской")
        Остаток = Остаток - Разряд *  1000000 

        Пропись = Пропись & Миллионы(Разряд)
    End If

    Группа = Остаток \  1000 
    If Группа <>  0  Then
        Разряд = Группа \  100 
        Пропись = Пропись & Сотни(Разряд)
        Остаток = Остаток - Разряд *  100  *  1000 
        Группа = Группа - Разряд *  100 

        If Группа >  19  Then
            Разряд = Группа \  10 
            Пропись = Пропись & Десятки(Разряд)
            Остаток = Остаток - Разряд *  10  *  1000 
            Группа = Группа - Разряд *  10 
        End If

        Разряд = Группа
        Пропись = Пропись & Единицы(Разряд, "Женский")
        Остаток = Остаток - Разряд *  1000 

        Пропись = Пропись & Тысячи(Разряд)
    End If

    Группа = Остаток
    If Группа <>  0  Then
        Разряд = Группа \  100 
        Пропись = Пропись & Сотни(Разряд)
        Остаток = Остаток - Разряд *  100 
        Группа = Группа - Разряд *  100 

        If Группа >  19  Then
            Разряд = Группа \  10 
            Пропись = Пропись & Десятки(Разряд)
            Остаток = Остаток - Разряд *  10 
            Группа = Группа - Разряд *  10 
        End If

        Разряд = Группа
        Пропись = Пропись & Единицы(Разряд, "Мужской")
        Остаток = Остаток - Разряд

        Пропись = Пропись & Рубли(Разряд)
    Else
        Пропись = Пропись & "рублей"
    End If

    коп = Right(число,  2 )
    If Val(коп) =  1  Then
         копейки = " копейка"
    End If
    If Val(коп) =  2  Or Val(коп) =  3  Or Val(коп) =  4  Then
         копейки = " копейки"
    End If
    If Val(коп) =  5  Or Val(коп) >  5  Or Val(коп) =  0  Then
         копейки = " копеек"
    End If
    Пропись = Пропись & " " & Right(число,  2 ) & копейки
    
    Длина = Len(Пропись)
    If IsNull(Длина) Then
       СуммаПрописью = " "
       Exit Function
    End If

    Пропись = UCase(Mid(Пропись,  1 ,  1 )) & (Mid(Пропись,  2 , Длина))

    СуммаПрописью = Пропись

End Function
    

Function Тысячи(Разряд As Long) As String

    If Разряд =  1  Then
        Тысячи = "тысяча "
    ElseIf Разряд >  1  And Разряд <  5  Then
        Тысячи = "тысячи "
    Else
        Тысячи = "тысяч "
    End If

End Function
...
Рейтинг: 0 / 0
Сумма прописью в Excele
    #34395075
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Число прописью(+)
big-duke Лучше не встречал
...
Рейтинг: 0 / 0
Сумма прописью в Excele
    #34397513
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сумма прописью в Excele
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]