Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2010, 09:15   #11
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
вопрос - почему?
Потому, что значение является строкой. При выполнении функции преобразования в числовое значение (Val), Excel преобразует текст в число до тех пор, пока не встретит символ, не являющийся числовым, т.е. не цифра и не разделитель целой и дробной части. Так, например, Val("123abcd456") вернет число 123 и т.п. Т.е. в Вашем случае происходит именно это (а не округление).
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 30.07.2010 в 09:22.
SAS888 вне форума Ответить с цитированием
Старый 30.07.2010, 09:24   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Что делает var()?
Как я понял, если в объяснении не напутано, если разделитель не системный - функция воспринимает выражение как текст и не обрабатывает. А если системный - как число и округляет.

Кстати, вот проверил - система чужой разделитель просто игнорирует

Sub tt()
x = 10.54
If IsNumeric(x) Then MsgBox x + 1
x = "10,54"
If IsNumeric(x) Then MsgBox x + 1
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 30.07.2010 в 09:31.
Hugo121 вне форума Ответить с цитированием
Старый 03.08.2010, 13:18   #13
gsg
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 108
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Потому, что значение является строкой. При выполнении функции преобразования в числовое значение (Val), Excel преобразует текст в число до тех пор, пока не встретит символ, не являющийся числовым, т.е. не цифра и не разделитель целой и дробной части. .
Если я не ошибаюсь, то объявляя массив
dim arr() as Double
я по умолчанию исключаю текстовые значения.

тем не менее, Val(arr(n)), где arr(n)=277,87 все равно выдает 277
-Возьмите лучших их лучщих!
-Лучшие из лучших зализывают раны...
-Тогда, возьмите лучших из худших!
gsg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Транспонирование множества данных из разных книгах или из разных листов на 1 лист посредством макроса Тантана Microsoft Office Excel 6 18.12.2014 13:04
Помогите плиз правильно написать макрос обновления данных из разных файлов Legame Microsoft Office Excel 10 10.09.2009 10:39
exe-файл не работает на других машинах D-mann Помощь студентам 8 04.09.2009 11:17
несколько разных строк из разных файлов сформировать в один Иван123456 Microsoft Office Excel 3 30.07.2009 17:05
WMI + Получать pID запускаемых процессов на удаленных машинах Seqular Общие вопросы .NET 0 23.05.2009 14:03