Страницы: 1 2 След.
RSS
Сумма прописью!
 
как сделать сумму прописью на другом языке? на русском у меня есть файл и на английском тоже.по всему интернету только по русски и английски(
 
а надо на каком?
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
А как же украинский и турецкий?  
http://www.programmersforum.ru/showthread.php?t=193596  
У Сергея на форуме    
http://www.excelworld.ru/index/chislo_propisju/0-32  
есть вариант на латышском - я одну русскую переделал (она в комплекте кажется тоже есть).
 
Добавлю - я на латышском сделал несколько вариантов - для денег (сантимы остаются цифрами), для вещей (мужской и женский род), плюс ещё их разновидности с и без обработки нуля и с скобками и без (уж заодно, чтоб в строке формул скобки не навешивать).  
Автор оригинального кода - Артём Луканин, его код легко поддаётся переделке под вероятно любой язык. Его вариант в комплекте, но что-то под 2007 версией проект ВБА теряет (только что обнаружил :( )  
А по ссылке http://www.programmersforum.ru/showthread.php?t=193596 есть хороший вариант от Казанского (со ссылкой на http://www.planetaexcel.ru/forum.php?thread_id=948 :)) с использованием возможностей Ворда. Но правда без копеек и без учёта рода считаемых вещей.  
Зато вероятно сотня языков (не считал :) ).
 
Надо было на Азербайджанском! Спасибо огромное Хюго.по твоим ссылкам нашел турецкий.сейчас переделаю.
 
что то не получается((я взял турецкий.как мне переделать его на Азербайджанский? мне нужно чтоб писалось манат а после точки копеек.пожалуйста если для кого то это легко помогите мне.я напишу здесь все как будет на азербайджанском. вот взял с турецкого и исправил.  
 
0 ноль - sıfır  
1 один - bir  
2 два - iki  
3 три - üç  
4 четыре - dörd  
5 пять - beş  
6 шесть - altı  
7 семь - yeddi  
8 восемь - səkkiz  
9 девять - doqquz  
10 десять - on  
11 одиннадцать - on bir  
12 двенадцать - on iki  
13 тринадцать - on üç  
14 четырнадцать - on dörd  
15 пятнадцать - on beş  
16 шестнадцать - on altı  
17 семнадцать - on yeddi  
18 восемнадцать - on səkiz  
19 девятнадцать - on doqquz  
20 двадцать - iyirmi  
30 тридцать - otuz  
40 сорок - qırx  
50 пятьдесят - əlli  
60 шестьдесят - altmış  
70 семьдесят - yetmiş  
80 восемьдесят - səksən  
90 девяносто - doxsan  
100 сто - bir yüz  
200 двести - iki yüz  
300 триста - üç yüz  
400 четыреста - dörd yüz  
500 пятьсот - beş yüz  
600 шестьсот - altı yüz  
700 семьсот - yeddi yüz  
800 восемьсот - səkkiz yüz  
900 девятьсот - doqquz yüz  
1000 тысяча - bir min  
миллион - milyon  
миллиард - milyard  
 
manat  это как б рублей  
 
qəpik  копеек.    
 
прикрепляю сюда файл на турецком котор скачал.  
 
огромное спасибо всем кто поможет или даже попытается
 
сайт не принимает Азербайджанский алфавит.вот и прикрепил ворд
 
Думаю, можно сказать спасибо форуму за кракозябры - вот как раз такие цифры и надо писать в ChrW() :)  
Т.е. например 5 будет "be" & ChrW(351).  
Насчёт переделки лучше IgorGo спросить - ему виднее, что там с копейками. Но думаю можно просто заменить написание. И в коде Луканина (даже в моей коррекции) тоже можно заменить, но там "копейки" остаются цифрами.
 
Есть еще вариант прописи на тджикском:  
http://www.excelworld.ru/forum/2-828-2  
но там совершенно другие принципы образования числительных
 
блин как все сложно.я думал там формула какая то будет просто меняешь на свой язык и все работает)))а вы тут мне про какие то ChrW() :):) ничего не понимаю)ладно буду писать так от руки)
 
Ну и зря.  
Расскажу про ChrW() - т.к. в коде (как и на форуме) нельзя прописать эту Вашу s с закорючкой снизу, то в коде её пишем как ChrW(351). Собираем строку из обычных символов и ChrW().  
В итоге из "be" & ChrW(351) получаем на листе при правильном шрифте "bes" ("s" с закорючкой внизу).  
Номера для символов любезно уже вытянул форум :)  
Если брать мой пример на латышском (а лучше оригинал на русском, если получится его открыть - понятнее где что), то там не сложно всё заменить. Не сложно, но работы много, некогда :(
 
спасибо брат огромное.я понимаю тебя тоже.извини а твоя ссылка какая была.на какой ты советуешь переделать?
 
http://www.excelworld.ru/index/chislo_propisju/0-32  
Там в архиве есть оригинальный русский вариант - думаю в том коде несложно заменить написание числительных.  
Если проблема разобраться с частью инсталляции - просто сделайте установку, затем подкорректируйте код в установленном файле (я сделал копии функции с другим названием).  
Но под 2007 у меня дома тот файл вылетает почему то...
 
такая ошибка на 2007(((  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
Брателла sarik1986, баклань нормалёк, а не фуфил  
242 кило грузить не понтово, паханов чморишь не по детски, да ещё в голимом ворде, а не в козырном gif
 
извиняюсь.
 
Скачал, открыл на 2003 - было предупреждение о макросах 4.0, видать это 2007 не нравится.  
Вот код - т.к. он был в свободном доступе, думаю можем пользоваться.  
Добавил в шапку копирайты из файла.  
Берите, меняйте написание числительных.  
 
 
'Автором функции является Артём Луканин.  
'Со всеми вопросами и предложениями можете обращаться по адресу: ice_lc@mail.ru  
'Также я буду рад Вас видеть у себя на сайте: http://artsoft.agava.ru  
' ------------------------------------------  
' ЧИСЛОПРОПИСЬЮ  
'  
' Дата создания : 22 апреля 99 г.  
' Автор         : Артём Луканин  
' Последнее  
'   обновление  : 20 апреля 2000 г.  
' ------------------------------------------  
'  
Public Function ЧИСЛОПРОПИСЬЮ(Num) As String  
Dim newNum As Integer, i As Integer, j As Integer  
Dim temp As String  
 Num = CDbl(Num)  
 If Num < 0 Then  
   ЧИСЛОПРОПИСЬЮ = "Отрицательное число!!!"  
   Exit Function  
 End If  
 Num = Num * 100  
 Num = Int(CDbl(CStr(Num)))  
 If Num > 99999999999999# Then  
   ЧИСЛОПРОПИСЬЮ = "Слишком большое число!!!"  
   Exit Function  
 End If  
 ЧИСЛОПРОПИСЬЮ = Right(CStr(Num), 2) & " коп."  
 If Len(CStr(Num)) = 1 Then ЧИСЛОПРОПИСЬЮ = "0" & ЧИСЛОПРОПИСЬЮ  
 ЧИСЛОПРОПИСЬЮ = "руб. " & ЧИСЛОПРОПИСЬЮ  
 Num = Int(Num / 100)  
 If Num = 0 Then  
   ЧИСЛОПРОПИСЬЮ = "Ноль " & ЧИСЛОПРОПИСЬЮ  
   Exit Function  
 End If  
 j = 0  
 For i = 1 To Len(CStr(Num))  
   newNum = CDbl(Right$(CStr(Num), 1))  
   Num = Int(Num / 10)  
   If i Mod 3 = 1 Then  
     j = j + 1  
     If CDbl(Right$(CStr(Num), 1)) = 1 Then  
       Select Case newNum  
         Case 1  
           temp = "одиннадцать "  
         Case 2  
           temp = "двенадцать "  
         Case 3  
           temp = "тринадцать "  
         Case 4  
           temp = "четырнадцать "  
         Case 5  
           temp = "пятнадцать "  
         Case 6  
           temp = "шестнадцать "  
         Case 7  
           temp = "семнадцать "  
         Case 8  
           temp = "восемнадцать "  
         Case 9  
           temp = "девятнадцать "  
         Case 0  
           temp = "десять "  
       End Select  
       If j = 2 Then  
         temp = temp & "тысяч "  
       ElseIf j = 3 Then  
         temp = temp & "миллионов "  
       ElseIf j = 4 Then  
         temp = temp & "миллиардов "  
       End If  
       ЧИСЛОПРОПИСЬЮ = temp & ЧИСЛОПРОПИСЬЮ  
       Num = Int(Num / 10)  
       i = i + 1  
     Else  
       Select Case newNum  
         Case 1  
           If j = 1 Then  
             temp = "один "  
           ElseIf j = 2 Then  
             temp = "одна тысяча "  
           ElseIf j = 3 Then  
             temp = "один миллион "  
           ElseIf j = 4 Then  
             temp = "один миллиард "  
           End If  
         Case 2  
           If j = 1 Then  
             temp = "два "  
           ElseIf j = 2 Then  
             temp = "две тысячи "  
           ElseIf j = 3 Then  
             temp = "два миллиона "  
           ElseIf j = 4 Then  
             temp = "два миллиарда "  
           End If  
         Case 3  
           If j = 1 Then  
             temp = "три "  
           ElseIf j = 2 Then  
             temp = "три тысячи "  
           ElseIf j = 3 Then  
             temp = "три миллиона "  
           ElseIf j = 4 Then  
             temp = "три миллиарда "  
           End If  
         Case 4  
           If j = 1 Then  
             temp = "четыре "  
           ElseIf j = 2 Then  
             temp = "четыре тысячи "  
           ElseIf j = 3 Then  
             temp = "четыре миллиона "  
           ElseIf j = 4 Then  
             temp = "четыре миллиарда "  
           End If  
         Case 5  
           temp = "пять "  
         Case 6  
           temp = "шесть "  
         Case 7  
           temp = "семь "  
         Case 8  
           temp = "восемь "  
         Case 9  
           temp = "девять "  
         Case 0  
           temp = ""  
       End Select  
         
       If newNum = 0 Then  
         If CDbl(Right$(CStr(Num), 2)) <> 0 Then  
           Select Case j  
             Case 2  
               temp = temp & "тысяч "  
             Case 3  
               temp = temp & "миллионов "  
             Case 4  
               temp = temp & "миллиардов "  
           End Select  
         End If  
       ElseIf newNum > 4 Then  
         Select Case j  
           Case 2  
             temp = temp & "тысяч "  
           Case 3  
             temp = temp & "миллионов "  
           Case 4  
             temp = temp & "миллиардов "  
         End Select  
       End If  
       ЧИСЛОПРОПИСЬЮ = temp & ЧИСЛОПРОПИСЬЮ  
     End If  
   ElseIf i Mod 3 = 2 Then  
     Select Case newNum  
         Case 2  
           temp = "двадцать "  
         Case 3  
           temp = "тридцать "  
         Case 4  
           temp = "сорок "  
         Case 5  
           temp = "пятьдесят "  
         Case 6  
           temp = "шестьдесят "  
         Case 7  
           temp = "семьдесят "  
         Case 8  
           temp = "восемьдесят "  
         Case 9  
           temp = "девяносто "  
         Case 0  
           temp = ""  
       End Select  
       ЧИСЛОПРОПИСЬЮ = temp & ЧИСЛОПРОПИСЬЮ  
   Else  
     Select Case newNum  
       Case 1  
         temp = "сто "  
       Case 2  
         temp = "двести "  
       Case 3  
         temp = "триста "  
       Case 4  
         temp = "четыреста "  
       Case 5  
         temp = "пятьсот "  
       Case 6  
         temp = "шестьсот "  
       Case 7  
         temp = "семьсот "  
       Case 8  
         temp = "восемьсот "  
       Case 9  
         temp = "девятьсот "  
       Case 0  
         temp = ""  
     End Select  
     ЧИСЛОПРОПИСЬЮ = temp & ЧИСЛОПРОПИСЬЮ  
   End If  
 Next i  
 Mid(ЧИСЛОПРОПИСЬЮ, 1, 1) = UCase(Mid(ЧИСЛОПРОПИСЬЮ, 1, 1))  
End Function
 
Игорь, проверил на 2010 - работает.
 
Значит 2007 глючный! :)  
Будете менять - оставляйте пробелы в конце строки, как в оригинале. Чтоб потом не переделывать.  
Т.е. осторожно аккуратно меняете "пять " на  "be" & ChrW(351) & " "
 
sarik1986, потестируйте
 
спасибо всем! мне проще всего показалось вариант МСН.и работает на 2007 классно.а сейчас я не могу понять как мне сделать так чтобы сумма прописью выходило там где мне нужно а не на этом листе((( МСН, брат ты мне очень помог. добей уже это для меня пожалуйста.я прикрепил твой файл и туда добавил лист который мне нужен.мне нужно чтоб сумма в голубой ячейке была в зеленой прописью копейками как на твоем листе с копейками.спасибо тебе!
 
в D25 Листа2 формулу:  
=AzerProp(D24)  
 
чтобы всегда писальсь копейки в функцие AzerProp последнюю строчку записываем как:  
AzerProp = UCase(Left(m, 1)) & Mid(m, 2) & "manat " & qp & " q" & ChrW(601) & "pik"  
 
PS:    
Вам нужно кириллицей или латиницей?  
если кириллицей, то приложите написание всех числительных:  
0, 1, 2, ... 9, 10, 20 ..., 90, 100, 200 ... 900, 1000, 1000000, 1000000000
 
мне с кириллицей нужно друг.никак не разбирусь с этим(я даже не понял в какую последнюю строчку писать AzerProp = UCase(Left(m, 1)) & Mid(m, 2) & "manat " & qp & " q" & ChrW(601) & "pik".  
 
понял что где прописьная сумма нужна вставлю =AzerProp(D24).на ячейку с числами. а как сделать чтоб всегда копейки писал даже если 00.кирилиццей?пожалуйста если можешь исправь это для меня и я отстану от тебя))) и еще если я удалю первый лист все удалиться или она не нужна?
 
в файле post_322685.xls функция уже исправлена, код функции можно посмотреть нажав Alt+F11  
"Лист1" можно спокойно удалить  
 
Для того чтобы перевести на кириллицу, нужно знать как пишутся все числительные
 
0, - сыфыр  
1, - бир  
2, - ики  
3, - цч  
4, - дюрд  
5, - беш  
6, - алты  
7, - йедди  
8, -сяккиз  
9, - доггуз  
10, - он  
20, - ийирми  
30, - отуз  
40, - гырх  
50, - ялли  
60, - алтмыш  
70, - йетмиш  
80, - сяксян  
90, - дохсан  
100,   йцз  
200, - ики йцз  
300, - цч йцз  
400, - дюрд йцз  
500, - беш йцз  
600, - алты йцз  
700, - йедди йцз  
800, - сяккиз йцз    
900, - доггуз йцз  
1000, - мин  
1000000, - бир милйон  
1000000000, - бир милйард  
 
манат  
 
гяпик  
 
теперь сможешь поммочь брат? и еще один вопрос можно будет?знаю тебе надоел)) когда у меня сумма 1000100 - пропись будет один миллион один сто тысяч манат.неправильно как то.должно быть один миллион сто тысяч манат. а если 100 сделать СТО. выходит 100000 = сто тысяч.а на азербайджанском в прописи должно быть одно сто тысяч(  
 
почему я когда включаю макросы при открытии документа вылетает эксел?
 
так?  
 
только не понял когда "бир йцз" пишется, а когда просто "йцз"
 
бир йцз, бир милйон, бир милйард они как б должны быть только в начале прописи. а дальше если будет 100 в сумме уже будет просто йцз а не йцз.тоесть на русском будет так. 2100 две тысячи одна сто. а должно быть ведь две тысячи сто.тоже самое на азербайджанском. если ко 100 написать "бир йцз" то везде будет бир йцз.а бир йцз должно быть как б только в начале предложения.вот так. 1100 "бир мин йцз". а просто сумма 100 будет "бир йцз".
 
а так все отлично брат.спасибо тебе.дай бог тебе здоровья.
 
потестируйте функцию AzerPropCyr из post_322774.xls  
Я ее так и сделал
 
сейчас переустановлю Офис проверю.влюбом случае спасибо!
Страницы: 1 2 След.
Читают тему
Наверх