Страница: 1 |
Страница: 1 |
Вопрос: Правильное округление в Excel 7
Добавлено: 09.09.08 18:04
Автор вопроса: Yoshie
Дамы и господа :)
Подскажите пожалуйста, как правильно использовать функцию Format, чтобы она просто округлила до 4го знака после запятой включительно, если число канеш дробное
Эксперименты ставила, но её логику так и не осилила - результат полный рандом.
Я так понимаю, передаваемое ей число надо сначала конвертнуть в строку? Т.е. если я ей передаю какую-то переменную дробного типа, то мне надо сделать Cstr?
Со вторым параметром - полная лажа
Надежда только на вас :)
ЗЫ.Round не предлагать по известным причинам:((((
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #1
Добавлено: 09.09.08 20:52
Если мне нужно было округлить самой, делала так. Например, нужно округлить до десятых. К числу дробному + 0.5, а затем результат в формат (#.0).
Нужно округлить до сотых. К числу дробному + 0.05, а затем результат в формат (#.00).
У меня без проблем всегда получалось.
Номер ответа: 2
Автор ответа:
Yoshie
Вопросов: 4
Ответов: 11
Профиль | | #2
Добавлено: 10.09.08 11:22
Не работает У меня числа разных порядков
Такая процедура из числа 2364.5123 при формате (#.0000) даёт 23645123, из 0.2 делает 2000
Есть какой-нить нормальный способ округления?
Round точно можно хоронить?
Номер ответа: 3
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #3
Добавлено: 10.09.08 11:42
А как пишешь ? Так ?
У тебя нигде не стоит умножение на 10000 ? А то что-то очень похоже.
Номер ответа: 4
Автор ответа:
Yoshie
Вопросов: 4
Ответов: 11
Профиль | | #4
Добавлено: 10.09.08 12:04
Format(Ячейка с числом, сохранённым как текст, "#.0000", правда он же возвращает строку, поэтому надо форматнуть в дробный сингл. Может из-за Csng?
Нет умножения! В том то и дело, что нет. А мне надо сравнить числа на равенство
Опытным путём вычислили, что на разных компах макрос вообще работает по-разному. На моём офисе 7 даже Round работает, на другом тупо перестаёт работать активация листа для вставки данных
Номер ответа: 5
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #5
Добавлено: 10.09.08 12:34
MsgBox Format(a, "#.0000", vbOKOnly 'рез-т 2351.2891
a = 2351.28915
MsgBox Format(a, "#.0000", vbOKOnly 'рез-т 2351.2892
MsgBox Val, vbOKOnly 'преобразование строки в число. рез-т 2351.2892 Внимание на разделитель числа.
P.S. Правда у меня Офис 2003
Номер ответа: 6
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #6
Добавлено: 10.09.08 12:35
Номер ответа: 7
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #7
Добавлено: 10.09.08 12:38
Номер ответа: 8
Автор ответа:
Yoshie
Вопросов: 4
Ответов: 11
Профиль | | #8
Добавлено: 10.09.08 12:48
Вот последняя строка у меня возвращает 2351 и msgbox - ом и записывает в ячейку......
Номер ответа: 9
Автор ответа:
Yoshie
Вопросов: 4
Ответов: 11
Профиль | | #9
Добавлено: 10.09.08 12:48
Написано вариантом 1.....
Номер ответа: 10
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #10
Добавлено: 10.09.08 15:03
Числовой разделитель в ячейке стоит ,
Вот так напиши:
Номер ответа: 11
Автор ответа:
Jasmin
Вопросов: 23
Ответов: 417
Профиль | | #11
Добавлено: 10.09.08 15:08
Кстати, вот так и Round должен работать: