Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/рубли и копейки прописью - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
рубли и копейки прописью
Alump Дата: Пятница, 11.04.2014, 15:46 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Просмотрел много готовых решений, но ни где не нашел, чтобы в написании прописью денег, копейки тоже писались прописью, везде цифрами.
Может не досмотрел и уже есть решение
Спасибо заранее
 
Ответить
СообщениеДобрый день!
Просмотрел много готовых решений, но ни где не нашел, чтобы в написании прописью денег, копейки тоже писались прописью, везде цифрами.
Может не досмотрел и уже есть решение
Спасибо заранее

Автор - Alump
Дата добавления - 11.04.2014 в 15:46
китин Дата: Пятница, 11.04.2014, 15:50 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7031
Репутация: 1079 ±
Замечаний: 0% ±

Excel 2007;2010;2016
к сожалению не помню,чья это работа.не моя,взял с этого форума
нашел.взято отсюдаработа уважаемого MCH
К сообщению приложен файл: 0073042.zip (17.9 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Пятница, 11.04.2014, 15:55
 
Ответить
Сообщениек сожалению не помню,чья это работа.не моя,взял с этого форума
нашел.взято отсюдаработа уважаемого MCH

Автор - китин
Дата добавления - 11.04.2014 в 15:50
Alump Дата: Пятница, 11.04.2014, 16:02 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо
Это я тоже нашел, но интересует, что бы копейки тоже писались прописью, а не цифрами
 
Ответить
СообщениеСпасибо
Это я тоже нашел, но интересует, что бы копейки тоже писались прописью, а не цифрами

Автор - Alump
Дата добавления - 11.04.2014 в 16:02
RAN Дата: Пятница, 11.04.2014, 17:40 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Function РубПропись(Сумма As Double, Optional Без_копеек As Boolean = False, _
                     Optional КопПрописью As Boolean = False, Optional начинитьПрописной As Boolean = True) As String
'Функция для написания суммы прописью
     Dim ed, des, sot, ten, razr, dec
     Dim i As Integer, str As String, s As String
     Dim intPart As String, frPart As String
     Dim mlnEnd, tscEnd, razrEnd, rub, cop

     dec = Array("", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
     ed = Array("", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
     ten = Array("десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать ")
     des = Array("", "", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девяносто ")
     sot = Array("", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот ")
     razr = Array("", "тысяч", "миллион", "миллиард")
     mlnEnd = Array("ов ", " ", "а ", "а ", "а ", "ов ", "ов ", "ов ", "ов ", "ов ")
     tscEnd = Array(" ", "а ", "и ", "и ", "и ", " ", " ", " ", " ", " ")
     razrEnd = Array(mlnEnd, mlnEnd, tscEnd, "")
     rub = Array("рублей", "рубль", "рубля", "рубля", "рубля", "рублей", "рублей", "рублей", "рублей", "рублей")
     cop = Array("копеек", "копейка", "копейки", "копейки", "копейки", "копеек", "копеек", "копеек", "копеек", "копеек")

     If Сумма >= 1000000000000# Or Сумма < 0 Then РубПропись = CVErr(xlErrValue): Exit Function
     '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     If Round(Сумма, 2) >= 1 Then
         intPart = Left(Format(Сумма, "000000000000.00"), 12)
         For i = 0 To 3
             s = Mid(intPart, i * 3 + 1, 3)
             If s <> "000" Then
                 str = str & sot(CInt(Left(s, 1)))
                 If Mid(s, 2, 1) = "1" Then
                     str = str & ten(CInt(Right(s, 1)))
                 Else
                     str = str & des(CInt(Mid(s, 2, 1))) & IIf(i = 2, dec(CInt(Right(s, 1))), ed(CInt(Right(s, 1))))
                 End If
                 On Error Resume Next
                 str = str & IIf(Mid(s, 2, 1) = "1", razr(3 - i) & razrEnd(i)(0), _
                    razr(3 - i) & razrEnd(i)(CInt(Right(s, 1))))
                 On Error GoTo 0
             End If
         Next i
         str = str & IIf(Mid(s, 2, 1) = "1", rub(0), rub(CInt(Right(s, 1))))
     End If
     РубПропись = str
     '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     If Без_копеек = False Then
         frPart = Right(Format(Сумма, "0.00"), 2)
         If frPart = "00" Then
             frPart = ""
         Else
             If КопПрописью Then
                 frPart = IIf(Left(frPart, 1) = "1", ten(CInt(Right(frPart, 1))) & cop(0), _
                    des(CInt(Left(frPart, 1))) & dec(CInt(Right(frPart, 1))) & cop(CInt(Right(frPart, 1))))
             Else
                 frPart = IIf(Left(frPart, 1) = "1", frPart & " " & cop(0), frPart & " " & cop(CInt(Right(frPart, 1))))
             End If
         End If
     РубПропись = str & " " & frPart
     End If
     '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     If начинитьПрописной Then РубПропись = UCase(Left(РубПропись, 1)) & Mid(РубПропись, 2)
End Function
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Function РубПропись(Сумма As Double, Optional Без_копеек As Boolean = False, _
                     Optional КопПрописью As Boolean = False, Optional начинитьПрописной As Boolean = True) As String
'Функция для написания суммы прописью
     Dim ed, des, sot, ten, razr, dec
     Dim i As Integer, str As String, s As String
     Dim intPart As String, frPart As String
     Dim mlnEnd, tscEnd, razrEnd, rub, cop

     dec = Array("", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
     ed = Array("", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
     ten = Array("десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать ")
     des = Array("", "", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девяносто ")
     sot = Array("", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот ")
     razr = Array("", "тысяч", "миллион", "миллиард")
     mlnEnd = Array("ов ", " ", "а ", "а ", "а ", "ов ", "ов ", "ов ", "ов ", "ов ")
     tscEnd = Array(" ", "а ", "и ", "и ", "и ", " ", " ", " ", " ", " ")
     razrEnd = Array(mlnEnd, mlnEnd, tscEnd, "")
     rub = Array("рублей", "рубль", "рубля", "рубля", "рубля", "рублей", "рублей", "рублей", "рублей", "рублей")
     cop = Array("копеек", "копейка", "копейки", "копейки", "копейки", "копеек", "копеек", "копеек", "копеек", "копеек")

     If Сумма >= 1000000000000# Or Сумма < 0 Then РубПропись = CVErr(xlErrValue): Exit Function
     '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     If Round(Сумма, 2) >= 1 Then
         intPart = Left(Format(Сумма, "000000000000.00"), 12)
         For i = 0 To 3
             s = Mid(intPart, i * 3 + 1, 3)
             If s <> "000" Then
                 str = str & sot(CInt(Left(s, 1)))
                 If Mid(s, 2, 1) = "1" Then
                     str = str & ten(CInt(Right(s, 1)))
                 Else
                     str = str & des(CInt(Mid(s, 2, 1))) & IIf(i = 2, dec(CInt(Right(s, 1))), ed(CInt(Right(s, 1))))
                 End If
                 On Error Resume Next
                 str = str & IIf(Mid(s, 2, 1) = "1", razr(3 - i) & razrEnd(i)(0), _
                    razr(3 - i) & razrEnd(i)(CInt(Right(s, 1))))
                 On Error GoTo 0
             End If
         Next i
         str = str & IIf(Mid(s, 2, 1) = "1", rub(0), rub(CInt(Right(s, 1))))
     End If
     РубПропись = str
     '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     If Без_копеек = False Then
         frPart = Right(Format(Сумма, "0.00"), 2)
         If frPart = "00" Then
             frPart = ""
         Else
             If КопПрописью Then
                 frPart = IIf(Left(frPart, 1) = "1", ten(CInt(Right(frPart, 1))) & cop(0), _
                    des(CInt(Left(frPart, 1))) & dec(CInt(Right(frPart, 1))) & cop(CInt(Right(frPart, 1))))
             Else
                 frPart = IIf(Left(frPart, 1) = "1", frPart & " " & cop(0), frPart & " " & cop(CInt(Right(frPart, 1))))
             End If
         End If
     РубПропись = str & " " & frPart
     End If
     '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     If начинитьПрописной Then РубПропись = UCase(Left(РубПропись, 1)) & Mid(РубПропись, 2)
End Function
[/vba]

Автор - RAN
Дата добавления - 11.04.2014 в 17:40
Alump Дата: Пятница, 11.04.2014, 18:08 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Скопировал все в VBA
А как запустить функцию?
 
Ответить
СообщениеСкопировал все в VBA
А как запустить функцию?

Автор - Alump
Дата добавления - 11.04.2014 в 18:08
Alump Дата: Пятница, 11.04.2014, 18:19 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо огромное!!
Все получилось
 
Ответить
СообщениеСпасибо огромное!!
Все получилось

Автор - Alump
Дата добавления - 11.04.2014 в 18:19
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!