Страницы: 1
RSS
Как запретить преобразование числа в переменной VBA в экспоненциальный формат
 
Добрый день
Почему число из ячейки "А2"=1111111111111110
в переменной
Код
Up_16_Symbol = Cells(2, 1)
преобразовывается в экспоненциональный формат?
[img]file:///D:/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA/Helper%20Planeta%20Excel[/img]
Как я понял это происходит когда в числе цифр больше 15.
Как этого избежать что бы число в переменной Up_16_Symbol не преобразовывалось в экспоненциальный формат?
Изменено: Borrusale - 19.09.2020 12:37:03
Быстрее молнии, быстрее ветра, быстрее калькулятора
 
Как вариант
Код
Up_16_Symbol = CDec(Cells(2, 1)) 
 
Число в ячейке Excel всегда хранится в формате double (как и в переменной VBA после присвоения). Excel в отладчике показывает значение переменной в экспоненциальной форме (считая в даном случае такой вид оптимальным для пользователя). Если Вы в ячейке выберете числовой формат с 0 знаков после запятой, то увидите значение ячейки в "обычной" форме.
Владимир
 
[USER=64]Hugo, спасибо

Не правильно сформулировал проблему

Подскажите, а если создается массив что бы число (например в моем файле во вложении ArrTest(2.1))
не преобразовывалось в экспоненциальный формат?  
Изменено: Borrusale - 19.09.2020 14:31:07
Быстрее молнии, быстрее ветра, быстрее калькулятора
 
Цитата
sokol92 написал:
Если Вы в ячейке выберете числовой формат с 0 знаков после запятой, то увидите значение ячейки в "обычной" форме
меня интересует значение переменной которая создается в коде VBA. Изменение формата ячейки не помогло для получения значения переменной в "обычной" форме.
Совет Hugo, помог, но  его применить не могу если я создаю массив и сталкиваюсь при это с проблемой экспоненциального формата
Изменено: Borrusale - 19.09.2020 14:38:56
Быстрее молнии, быстрее ветра, быстрее калькулятора
 
Borrusale, а вы уверены, что у вас число, а не текст в виде набора цифр?
Для чего у вас такие длинные числа - в расчетах они ни где не используются, только как идентификационные номера.
Присваивайте данному номеру соответствующую переменную - as String.
 
Цитата
Borrusale написал:
меня интересует значение переменной которая создается в коде VBA
Еще раз - свойство Range.Value всегда возвращает числа (любые, целые в том числе) в формате double.
Владимир
 
Borrusale,
откройте файл, посортируйте по колонке А, посортируйте по колонке В, повторите (на всякий случай)
текст - это не числа!
хоть и визуальной разницы нет
но для компьютера это разные типы данных! по-разному хранятся в памяти, занимают разное количество памяти и сравниваются по-разному
когда вы поймете, что тест - это не число, все станет на свои места, а не поймете... так и будете недоумевать что за чертовщина происходит
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
когда вы поймете, что тест - это не число
я понимаю в чем разница. С этой проблемой сталкиваюсь каждый день.

Вообщем не получается у меня объяснить эту ошибку по простому.

Во вложении макрос в котором ошибка связанная как мне кажется с "экспоненциальным форматом"
Посмотрите пожалуйста почему я не могу получить нужный мне ответ

Цель макроса: Найти в массиве все 18-ти значные числа и что бы они в массиве на выходе не повторялись
Изменено: Borrusale - 19.09.2020 19:50:32
Быстрее молнии, быстрее ветра, быстрее калькулятора
 
Цитата
Borrusale написал:
Найти в массиве все 18-ти значные числа
В Excel не бывает 18 значных чисел. Число в Excel может содержать только 15 цифр, включая цифры дробной части.
Введите 18- значное число как текст, чтобы лишние цифры не превратились в нули на этапе ввода, запустите код, и поглядите, что будет с вашим 18- значным числом
Код
Sub qq()
x = Val(Selection.Text)
a = Format(x, "#")
End Sub
Изменено: RAN - 19.09.2020 20:41:04
 
Цитата
Borrusale написал:
я понимаю в чем разница
Цитата
Borrusale написал:
Найти в массиве все 18-ти значные числа
значит не понимаете... попробуйте так
костыльно, неоптимально ибо влом
Изменено: buchlotnik - 19.09.2020 20:51:10
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
попробуйте так
Спасибо!
Быстрее молнии, быстрее ветра, быстрее калькулятора
 
Цитата
Borrusale написал:
я понимаю в чем разница
а что же вы с таким завидным упорством пытаетесь заставить макрос
Цитата
Borrusale написал:
Найти в массиве все 18-ти значные числа
если должны понимать что нет таких у Excel
строка содержащая 18 цифр есть, а числа содержащего 18-цифр - нету! не отведено под мантису числа столько памяти! там некуда складывать 18 цифр. читайте матчасть
Цитата
Ігор Гончаренко написал:
когда вы поймете, что тест - это не число, все станет на свои места, а не поймете... так и будете недоумевать что за чертовщина происходит
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
а числа содержащего 18-цифр - нету
не знал о таком ограничении
Быстрее молнии, быстрее ветра, быстрее калькулятора
 
За 7 лет не сталкивались? Да ну, не может быть... Если только форум не читать вообще...
Страницы: 1
Наверх