Страницы: 1
RSS
Подводные камни преобразования текста в число, ВБА, формулы
 
Здравствуйте, уважаемые форумчане.
Возможно для вас это не новость, но для меня это оказалось подводным камнем, который впервые встретил на своём пути.
По работе возникла необходимость сортировать таблицу по коду. Код мог состоять как из одних цифр, так и из смеси цифр и букв. Одни коды из цифр были введены как числа, а другие, как текст (в т.ч. с впереди стоящим(и) нулём(ями)).
Для меня сюрпризом оказалось то, что код содержащий среди цифр одну латинскую букву "E" при проверке на является ли числом или нет давал либо положительный, либо отрицательный результат. Особо разбираться не стал с этим вопросом, т.к. исходя из имеющихся знаний понял, что в первом случае код, например, "0123E123", конвертировался в 1,23E+125, а в другом текстом и оставался, т.к. для числа конвертируемое значение было слишком большим, например, "0123E999".

Допустим, имеются два кода текстом:
1) 0123E123
2) 0123E999
При конвертации в число формулами получим, соответственно:
-- (двойное отрицание) = 1,23E+125 и #ЗНАЧ!
ВБА:
isnumeric() = True и False
-- (двойное отрицание) = 1,23E+125 и ошибка "Overflow"

Рад был поделиться с вами своим наблюдением. Как говорится "предупреждён - вооружён".
Успешной деятельности на поприще экселя вам.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
А я пробовал текст переводить в число умножением на 1.
Но в таком случае, если первый знак - "0", результат в числовом формате выводится без "0", т.е. со второго знака.
Нашел такой выход: разбивал текст на знаки (каждый знак в отдельную ячейку), а потом собирал через "СЦЕПИТЬ".
 
Цитата
_Igor_61 написал: текст переводить в число
Цитата
_Igor_61 написал:если первый знак - "0", результат в числовом формате выводится без "0"
Смею спросить, а где Вы число видели, у которого первый знак 0?
JayBhagavan, тоже натыкался на этот камень :(
Изменено: Ivan.kh - 21.09.2016 09:06:49
 
Ячейки были в текстовом формате, и в них были введены цифровые значения, напр. 02653.
Неправильно выразился, наверное - имел ввиду формат ячеек, извините, постараюсь исправиться  :)
 
Добрый день! Не стал открывать новую тему, так как надеюсь что найдутся специалисты, которые помогут решить похожий вопрос. Итак: Есть числовой код, к примеру "1000000000002062710". Он отображается как текст. При конвертации в число получается "1Е+18". При развертывании в обычный числовой формат выходит "1000000000002060000". То есть обнуляются последние цифры. Причем при попытке исправить данную ошибку в ручную, добавив "2710" в число, эксель скидывает опять цифры к нулю.  Пробовал разные форматы, формулы конвертации, но так и не смог решить проблему. Прошу помощи/совета.  
 
Здравствуйте.
Выбираете формат ячеек - Число - (все форматы) и в строке тип вставляете "1000000000002062710". И будет отображаться в этом формате. Если надо больше символов, тогда добавляйте символы в строке тип.
 
помощи вы не дождетесь
невозможно в Excel записать число более чем с 15 значащими цифрами (изучайте материальную часть, там все написано о системных ограничениях)

поищите в инете решения с "длинной математикой"
с их помощью сможете выполнять арифметические действия с длинными числами, но в Excelе сможете их хранить ТОЛЬКО в виде строки состоящей из цифр
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
написал:
Выбираете формат ячеек - Число - (все форматы) и в строке тип вставляете "1000000000002062710". И будет отображаться в этом формате. Если надо больше символов, тогда добавляйте символы в строке тип.
Не работает. Округляет все равно...а в текстовом и так держится  
 
Цитата
написал:
невозможно в Excel записать число более чем с 15 значащими цифрами (изучайте материальную часть, там все написано о системных ограничениях)
Добрый день! Ок. А как тогда в эксель обрабатываются к примеру 18-значные штрих-коды? Кроме текстового формата. К примеру надо заполнить последовательными ШК  ячейки. Обычно они "протягивались" Есть ли что-то позволяющее это делать?
 
сначала долистайте вот сюда
Технические характеристики и ограничения вычислений
это практически до средины страницы

потом высылайте файл, в котором обрабатываются 18 значные штрих-коды, будем изучать как в число записать 18 значащих цифр
понятно, что вам ОЧЕНЬ НУЖНО, но это не тот случай, когда нельзя, но если очень нужно, то можно
точность 15 знаков - в Excelе больше - никак. в специальном софте - сколько угодно, но и там число будет хранится как текст,  но может быть сложено с другим таким же числом-текстом.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
написал:
потом высылайте файл, в котором обрабатываются 18 значные штрих-коды, будем изучать как в число записать 18 значащих цифрпонятно, что вам ОЧЕНЬ НУЖНО, но это не тот случай, когда нельзя, но если очень нужно, то можноточность 15 знаков - в Excelе больше - никак. в специальном софте - сколько угодно, но и там число будет хранится как текст,  но может быть сложено с другим таким же числом-текстом.
Да, в принципе Вы подтолкнули меня к решению. Получилось то, что надо. Пример: число 1000000000002062710 разбиваем на 100000000000206 и 2710 в числовых форматах. Их можно "тянуть" автозаполнением.. А потом формулой "сцепить". Она автоматом конвертирует в текстовый формат и получается целое число "1000000000002062710" даже без треугольника отметки что оно текстовое.
Вообщем спасибо Вам за помощь. Необходимый результат найден.
 
Страницы: 1
Наверх