Здравствуйте, уважаемые форумчане.
Возможно для вас это не новость, но для меня это оказалось подводным камнем, который впервые встретил на своём пути.
По работе возникла необходимость сортировать таблицу по коду. Код мог состоять как из одних цифр, так и из смеси цифр и букв. Одни коды из цифр были введены как числа, а другие, как текст (в т.ч. с впереди стоящим(и) нулём(ями)).
Для меня сюрпризом оказалось то, что код содержащий среди цифр одну латинскую букву "E" при проверке на является ли числом или нет давал либо положительный, либо отрицательный результат. Особо разбираться не стал с этим вопросом, т.к. исходя из имеющихся знаний понял, что в первом случае код, например, "0123E123", конвертировался в 1,23E+125, а в другом текстом и оставался, т.к. для числа конвертируемое значение было слишком большим, например, "0123E999".
Допустим, имеются два кода текстом:
1) 0123E123
2) 0123E999
При конвертации в число формулами получим, соответственно:
-- (двойное отрицание) = 1,23E+125 и #ЗНАЧ!
ВБА:
isnumeric() = True и False
-- (двойное отрицание) = 1,23E+125 и ошибка "Overflow"
Рад был поделиться с вами своим наблюдением. Как говорится "предупреждён - вооружён".
Успешной деятельности на поприще экселя вам.
Возможно для вас это не новость, но для меня это оказалось подводным камнем, который впервые встретил на своём пути.
По работе возникла необходимость сортировать таблицу по коду. Код мог состоять как из одних цифр, так и из смеси цифр и букв. Одни коды из цифр были введены как числа, а другие, как текст (в т.ч. с впереди стоящим(и) нулём(ями)).
Для меня сюрпризом оказалось то, что код содержащий среди цифр одну латинскую букву "E" при проверке на является ли числом или нет давал либо положительный, либо отрицательный результат. Особо разбираться не стал с этим вопросом, т.к. исходя из имеющихся знаний понял, что в первом случае код, например, "0123E123", конвертировался в 1,23E+125, а в другом текстом и оставался, т.к. для числа конвертируемое значение было слишком большим, например, "0123E999".
Допустим, имеются два кода текстом:
1) 0123E123
2) 0123E999
При конвертации в число формулами получим, соответственно:
-- (двойное отрицание) = 1,23E+125 и #ЗНАЧ!
ВБА:
isnumeric() = True и False
-- (двойное отрицание) = 1,23E+125 и ошибка "Overflow"
Рад был поделиться с вами своим наблюдением. Как говорится "предупреждён - вооружён".
Успешной деятельности на поприще экселя вам.