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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2011, 18:47   #1
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию Рекомендую знатокам и любителям EXCEL.

Код:
    А    В
1	30114810100000000039
2	30114810100000000042
3	
4  ЛОЖЬ	=B2=B1
5  1	=сумм(--(B1:B2=B2))
6  2	=СЧЁТЕСЛИ(B1:B2;B2)
вот фрагмент таблицы эксель. Колонка В имет формат текстовый. тут две ячейки с данными и три с формулами. в строках 4, 5, 6 в колонке В приведены тексты формул, в колонке А результаты вычислений этих формул.

Результаты в А4, А5 не вызывают сомнений. А вот в А6 СЧЕТЕСЛИ вернул 2, т.е. СЧЕТЕСЛИ решил, что в диапазоне В1:В2 два значения таких, как в В2. Как вам результат?
При пошаговом вычислении формулы видно как эксель сравнивает текстовое значение "30114810100000000042" (именно текст, а не число 30114810100000000042) с диапазоном В1:В2 и возвращает результат 2!!!

файл приложен, проверте, пожалуйста, у себя.

вывод у меня один: в данной ситуации эксель решил конвертировать значения в числа, а за счет точности хранения мантисы эти числа оказались равными.

господа, будьте бдительны при работе с длинными числами хранящимися как текст. или я погарячился с выводами?
Вложения
Тип файла: rar КнигаR752.rar (3.5 Кб, 11 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.12.2011, 19:02   #2
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Мне кажется дело в аппроксимации. Почти аналогичное обсуждалось здесь. Помимо этого, там много чего еще интересного : )
Тишина – самый громкий звук

Последний раз редактировалось nerv; 22.12.2011 в 19:06.
nerv вне форума Ответить с цитированием
Старый 22.12.2011, 19:56   #3
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
[CODE]вывод у меня один: в данной ситуации эксель решил конвертировать значения в числа, а за счет точности хранения мантисы эти числа оказались равными.
Видимо так и есть:
=СЧЁТЕСЛИ(B1:B2;"301148101000000000 39") = 2
=СЧЁТЕСЛИ(B1:B2;"301148101000000000 42") = 2
=СЧЁТЕСЛИ(B1:B2;3011481010000000000 0) = 2
=СЧЁТЕСЛИ(B1:B2;"="&B1) = 2

А вот это уже интереснее:
=СЧЁТЕСЛИ(B1:B2;">="&B1) = 0
Текст нельзя сравнивать на больше/меньше в СЧЕТЕСЛИ
MCH вне форума Ответить с цитированием
Старый 22.12.2011, 23:10   #4
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

http://catstail.narod.ru/
http://catstail.narod.ru/arithm.zip
Цитата:
ActiveX-Dll, содержащая набор процедур, реализующих арифметику сверхвысокой точности (на символьных строках) Размер чисел ограничен максимальным размером строковой переменной в Visual Ваsic (а это довольно много!) Реализуются все четыре действия над числами без точки, а также сложение, вычитание и умножение над дробными числами (с десятичной точкой). Возможные сферы примения - математические вычисления и, может быть, бухгалтерия. Компонент может быть применен в VB и VBA (Word, Excel) Инструкция и примеры использования прилагаются.
Aent вне форума Ответить с цитированием
Старый 23.12.2011, 15:44   #5
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию

"Корреспондентские счета в банках-нерезидентах"...

Я раньше вообще мучался, когда обрабатываешь ведомость остатков.
Последний месяц вот налег на VBA для обработки этих данных....

Это у тебя не единственный глюк. Если, например сделать список из таких счетов (с повторяющимися счетами) и отсортировать, то результат сортировки будет вообще странным...
а если выбрать текст и числа отдельно друг от друга сортировать, то тогда все норм будет.
Нет ничего невозможного, главное верить в это.

Последний раз редактировалось Snekich; 23.12.2011 в 15:58.
Snekich вне форума Ответить с цитированием
Старый 23.12.2011, 17:25   #6
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Если, например сделать список из таких счетов (с повторяющимися счетами) и отсортировать, то результат сортировки будет вообще странным...
Потому, что это строки, а не числа.
Код:
Sub io()
MsgBox 2 < 11 ' True
MsgBox "2" < "11" ' False
' при этом
MsgBox 2 = "2" ' True
MsgBox 11 = "11" ' True
End Sub
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопросам знатокам и просто любителям, нужно составить не сложный sql запрос modz SQL, базы данных 3 14.08.2013 11:20
Настоящим знатокам! GTR Помощь студентам 5 25.10.2008 13:53
вопрос знатокам Exo Microsoft Office Excel 1 29.01.2008 17:01