Страницы: 1
RSS
Ноль в конце значения после запятой., Как принудительно включить последний ноль в копейках?
 
Доброго времени суток!

Проблема следующая: веду таблицу по договорам фирмы. В одном из столбцов забита цена.
Сделал автозаполнение счета в Excel и вордовской болванки договора.
В счете сумма например 98494,60 отображается корректно и пропись из этой суммы получается правильная.
Но! при заполнении болванки сделанной в Word передается значение не 60 копеек а 6, т.к. в ячейке экселя данное число хранится в виде 98494,6 без нуля на конце.
Как же отключить такой формат сохранения значения без перевода ячейки в текстовый формат.

Перерыл массу документов и форумов, везде попадалось лишь про округление или формат ячейки, или настройки самого экселя.
Прошу помощи!
Изменено: dreamkin - 23.07.2013 13:53:28
 
Цитата
веду таблицу по договорам фирмы
что-то не видно таблицы  ;)
 
Если это поможет, пожалуйста, прикрепил часть таблицы.
 
Цитата
dreamkin пишет:
Но! при заполнении болванки сделанной в Word передается значение не 60 копеек а 6, т.к. в ячейке экселя
Каким способом? копирование или макрос?
 
Как вариант в свободном столбце вставить формулу:
Код
=ТЕКСТ(K3;"# #,00")

и данные брать из этого столбца
 
Dima S
Каким способом? копирование или макрос?

Заполнение болванки идет через макрос.
Этой ячейке присвоено имя Договор_Цена
Объявлена переменная Contract_Price As Double
Присваиваем Contract_Price = ActiveSheet.Range("Договор_Цена")
и заменяем objDoc.Content.Find.Execute FindText:="#Договор_Цена#", ReplaceWith:=.Contract_Price, Replace:=wdReplaceAll

DV
=ТЕКСТ(K3;"# #,00")

Не помогает, все равно пропадает ноль.
 
Цитата
Не помогает, все равно пропадает ноль.
Это скорее всего и не поможет сформируйте сумму копеек отдельно.
Код
=целое(K3*100)
 ;)
 
Для корректного визуального отображения: столб К - формат ФИНАНСОВЫЙ.
А для "прописью": если функция "цивилизованная" - сделает все, как положено.
 
LVL
Это скорее всего и не поможет сформируйте сумму копеек отдельно.

Черт побери! Как же я до этого не допер? На то видимо форумы и создавались.
К сожалению как бы не был крут Excel, но без костылей никак не обойтись.
Количество столбцов неуклонно растет.  :)

Мотя
Для корректного визуального отображения: столб К - формат ФИНАНСОВЫЙ.
А для "прописью": если функция "цивилизованная" - сделает все, как положено.


Пропись, как раз переводит корректно. Финансовый формат меняет всего лишь визуальное отображение для удобочитаемости, но число там хранится по-прежнему без завершающего нуля.
 
Зачем вам дополнительный столбец если обработка идет кодом? Делайте эту итерацию в коде. ;)
 
думаю проблема в макросе и том какой тип данних он возвращает.
попробуйте переменную, которая записывается в ячейку взять как CDouble(переменная)
 
Объявляем переменная Contract_Price As string
Присваиваем Contract_Price = ActiveSheet.Range("Договор_Цена").text
Как-то так.
 
Цитата
взять как CDouble(переменная)
не правильный синтаксис
Код
CDbl()
хотя я не очень представляю чем это поможет :)
 
Есть еще вариант...
Как бы не показалось странным - у меня в Word (простым копированием) число 98 494,60 появилось в таком виде. ;)
=ОКРУГЛ(K3;2)
 
Hugo
Объявляем переменная Contract_Price As string

К сожалению переменная используется еще и для подстановки суммы прописью и такой формат имеющиеся функции не устраивает. Выскакивает ошибка типов.

LVL
CDbl()
хотя я не очень представляю чем это поможет


Да действительно это не работает.

Зачем вам дополнительный столбец если обработка идет кодом? Делайте эту итерацию в коде.

Кода уже столько навалено, что лишний столбец будет удобнее  ;) К тому же кроме меня этой таблицей вряд ли кто-то будет еще пользоваться.

Мотя
Есть еще вариант...
Как бы не показалось странным - у меня в Word (простым копированием) число 98 494,60 появилось в таком виде.  
=ОКРУГЛ(K3;2)

Число в таком виде в ячейке можно получить путем установки формата ячейки в текстовый или по шаблону "# #,00".

Видимо специфика хранения чисел в Excel.
 
Ну тогда пусть будет double - получаете макросом из его целой части рубли, из дробной копейки в две отдельные переменные, которые уже далее комбинируете как угодно.
 
Извиняюсь за лень, но может кто из личных запасов поделится готовой функцией?

Конец рабочего дня сказывается  :D
Я же уже ее писал.
Mid(Договор_Цена, 1, 1)) + Mid(Договор_Цена, 2)
Изменено: dreamkin - 23.07.2013 16:19:29
 
Цитата
dreamkin пишет:
К сожалению переменная используется еще и для подстановки суммы прописью и такой формат имеющиеся функции не устраивает. Выскакивает ошибка типов.
Сделайте две переменных: в одну пишите число, во вторую - строку (Range.text)
Ну или когда подставляете функцию для прописи - делайте преобразование типов с помощь той же CDbl()
Изменено: ambasad - 23.07.2013 17:46:00
 
Большая благодарность за интерес к моей проблеме и оперативные ответы.
Буду пробовать разные варианты. Отпишусь, если это будет интересно.
 
Если используете переменную Contract_Price в расчетах, то объявите новую стринговую переменную
Dim Contract_Price_Txt As String

и присвойте ей нужное отформатированное значение:
Contract_Price_Txt = Format(Contract_Price, "# ##0.00")

или
Contract_Price_Txt = ActiveSheet.Range("Договор_Цена").Text

Значение переменно во втором вариане будет зависить от формата ячейки

Можно не использовать дополнительную переменную, а форматировать на лету и отправлять в Word форматированное число с помощью Format(Contract_Price, "# ##0.00")
 
MCH
Можно не использовать дополнительную переменную, а форматировать на лету и отправлять в Word форматированное число с помощью Format(Contract_Price, "# ##0.00")

Вы гений! Это работает!
 
Доброго времени суток! Помогите пожалуйста! Есть столбцы чисел  (Пример 2,0800 или 22,3250  ). Формулами разбиваю каждое такое число по трем столбцам 2/08/00( не пишет последние 00)  или 22/32/50(не пишет 0 после 5 получаем число 5 вместо 50).  Необходимо, чтобы каждая цифра сохранялась.  
Изменено: Лилиана - 11.07.2022 10:15:33
 
Здравствуйте.
Нифига себе какую древнюю тему откопали :)
Вариант решения в лоб =IF(ISERR(FIND(",";B3));"";MID(B3;FIND(",";B3)+1;100))&REPT("0";4-LEN(IF(ISERR(FIND(",";B3));"";MID(B3;FIND(",";B3)+1;100))))
 
не имеет ваш вопрос к теме никакого отношения, но...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
написал:
не имеет ваш вопрос к теме никакого отношения, но...
Благодарю, всё получилось. С формулой  от bigord не задалось что-то, пишет #ИМЯ.
Страницы: 1
Читают тему
Наверх