Страницы: 1
RSS
При сравнении ячеек на равенство на листе регистр не учитывается
 
Доброго времени суток, Планетяне!

Собственно, вопроса нет, но я тут очень сильно офигел, когда увидел что обычное сравнение 2ух ячеек на равенство типа =A1=B1 не учитывает регистр
Есть функция =СОВПАД(), которая учитывает регистр, но не различает числа и числа-как-текст

По-моему, это не что иное, как очередная (пусть и задокументированная) глупость от мелкомягких  :evil:
Главное, многие функции регистрозависимы, но при этом проверка на банальное равенство этот регистр игнорирует
Я, конечно, знатно офигел от таких дел …

P.S.:
вопросов к функции =СОВПАД() у меня нет - она сравнивает текст, а значит числа перед сравнением преобразовываются и всё ОК
Вопросы к сравнению через равенство - ведь строки "ВАСЯ" и "вася" не должны быть равны при простом сравнении "в лоб" через "=". Получается, для полноценной проверки на листе, мне теперь нужно использовать 2 эти функции + =ЕСЛИ(), что, конечно очень неудобно и глупо, если честно…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Давно не новость, если честно...
Цитата
Jack Famous написал:
не различает числа и числа-как-текст
потому что она вообще не различает числа, а переводит любое значение в текст. Это легко проверить, если записать в одну ячейку число 1234567890123456789, а в другую текст "1234567890123456789". В первой ячейке все символы после второй 5-ки будут заменены на нули(т.к. Excel не может оперировать такими числами), а во второй - нет. И эти два значения функция СОВПАД посчитает разными. Если бы она переводила их в числа - то посчитала бы одинаковыми. Даже если напрямую в функцию занести эти значения(=СОВПАД(1234567890123456789;"1234567890123456789")), то она вернет ЛОЖЬ, т.к. первым аргументом записано число и еще до того, как функция начнет что-то сравнивать Excel отсечет все после второй 5-ки. А второй аргумент останется как есть.
А вот если передать такое же в СЧЁТЕСЛИ(которая как раз приводит все что можно к числу) - она посчитает это совпадением.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, функция =СОВПАД() мне вообще не интересна - я о ней до сегодняшнего дня даже не знал (искал другие варианты сравнения после откровения с "=") и как раз её поведение у меня вопросов не вызывает (ты всё правильно сказал, что она сравнивает текстовые строки)
Вопросы к сравнению равенством. Может меня, конечно, VBA разбаловал, но там равенство есть равенство и я очень удивлён, что на листе не так.
Если бы я хотел сравнить без учёта регистра, то преобразовал бы каждый аргумент к одному и всё, а тут вообще капец — строки сравнивай через совпад, а числа с псевдочислами через равенство. Глупо и неудобно
Изменено: Jack Famous - 09.11.2020 09:57:45
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Ну, в ПОИСКПОЗ такая же история, тоже не учитывает регистр. И когда, например я использую ее в паре ИНДЕКС+ПОИСКПОЗ я всегда об этом помню. Так что для меня, то что = не учитывает регистр- вот ни сколько не удивительно)
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Цитата
Jack Famous написал:
Глупо и неудобно
В PQ они исправились. Айда к нам на темную сторону силы.  ;)
Вот горшок пустой, он предмет простой...
 
Dyroff, да к функциям, в принципе, вопросов нет. Хотелось бы (лично мне) , конечно, по-умолчанию использовать строгое бинарное сравнение и иметь возможность опционально приравнивать числа к псевдочислам и игнорировать регистр. Я бы разрабатывал как-то так (собственно, я именно такие функции на VBA и написал для своих сотрудников  :D ) и не думаю, что это сильно бы повлияло на производительность. Пусть каждый сам решает, как ему сравнивать, чтобы не надо было использовать никакие "костыли" и "обёртки".
Вот это было бы "для людей", а сейчас получается, что нужно на собственном опыте "шишки набивать", ну или использовать тома очешуительных мануалов в качестве туалетного прикроватного чтива — ну такое себе. Я, конечно, многое успел узнать про Excel, нюансы его работы и всё такое, но считаю, что для простого пользователя всё слишком уж неочевидно. Можно гораздо лучше и как бы мелкомягкие не обожглись на таком отношении…

Цитата
PooHkrd: Айда к нам на темную сторону силы
нашёл 39 вдохновляющих цитат Йоды - можно ответить практически любой, но мне больше всего понравилась «Вы найдете хорошее в плохом, когда будете спокойны и пассивны»  :D
На самом деле, я нередко использую PQ и признаю его важность во многих вопросах, однако в силу специфики своей работы "разгрести данные и построить структуру" в основном использую всё-таки универсальные инструменты на VBA  ;)
Изменено: Jack Famous - 09.11.2020 10:33:44
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
А вот если передать такое же в СЧЁТЕСЛИ(которая как раз приводит все что можно к числу) - она
одинаково отсечёт в обоих значениях :(
 
Цитата
Hugo написал:
одинаково отсечёт в обоих значениях
да, я об этом и написал - она постарается привести к числу все, что можно к нему привести несмотря на любые потери. Вот здесь более подробно расписывал какие еще бяки с числами как текст можно ожидать от СЧЁТЕСЛИ: Как подсчитать количество повторений
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Jack Famous написал:
VBA разбаловал, но там равенство есть равенство
- тоже бывают сюрпризы...
P.S. А вот кстати как эти два значения сравнит PQ?
Изменено: Hugo - 09.11.2020 11:38:09
 
Как всегда ноги растут из запятой и нелогичного поведения Excel в части вытаскивания значений из недр файла и помещения информации об оных в ячейку. При этом какие-то функции считывают значения ячейки As Is(которые работают с бинарным представлением значения), а какие-то что-то еще пытаются "определить и преобразовать". Например, если записать в приложенном Игорем файле функцию:
=ВПР(A1;B1;1;0)
то она не найден соответствия. Так что здесь не совсем VBA виноват. Потому что на самом деле значения-то такие:
Код
"A1"=12.123000000000001
"B1"=12.122999999999999
P.S. Кстати, PQ видит значения правильно - т.е. со всеми хвостами.
При этом, если в каждую ячейку встать, нажать F2-Enter - то числа преобразуются и будут уже без хвостов. Обычно такие феномены наблюдаются в случаях, когда файл выгружен из 1С или другой сторонней программы. Видимо что-то там в схеме заставляет Excel думать "иначе".
Изменено: Дмитрий(The_Prist) Щербаков - 09.11.2020 11:58:10
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, а где Вы увидели эти хвосты? В VBA их не видно, форматом ячейки тоже не показывает.
А, вижу PQ у А1 показывает 12,123000000000001, а второе так и есть 12,123
Изменено: Hugo - 09.11.2020 12:06:08
 
Цитата
Hugo написал:
а где Вы увидели эти хвосты?
залез в схему XML файла :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Так для схемы нужно сперва файл пересохранить, а это уже нарушение данных! :)
 
Т.е. PQ на таких данных тоже вероятно не найдёт соответствия.
А Эксель своими всеми формулами показывает что они равны!
 
Цитата
Hugo написал:
Эксель своими всеми формулами показывает что они равны!
нет-нет. Я же написал - не всеми. ВПР не найдет соответствия. И ПОИСКПОЗ тоже...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Hugo написал:
А вот кстати как эти два значения сравнит PQ?
А вот так:

Т.е. в ячейке А1 есть число с 17-ю значащими знаками. Эксель это дело обрезает и в строке формул показывает, что оно = 12,123. Но VBA и PQ видят что это не так и сравнивают с учетом этих двух обрезаемых цифр.
Ну и до кучи DAX тоже видит хвосты.
Изменено: PooHkrd - 09.11.2020 16:37:43
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
число с 17-ю значащими знаками.
нет, нет. Их там 15 после запятой. Плюс скорее всего не сам Excel обрезает, а лишь определенные реализации формул. Ведь как я уже писал ВПР и некоторые схожие с ней функции тоже видят эти знаки.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Да, ВПР тоже не находит совпадения. А ведь по логике должно - оба числа, оба одинаковые как их в самом Экселе ни крути, вот как выловить допустим в огромном диапазоне на каком значении косяк?
Хотя если их перемножать/делить, то вся разница пропадает.
 
Добрый день
Можно настроить в екель следующее:
в 1 столбец -  дата, 2 столбец- дата, 3 столбец - количество дней
Необходимо настроить выделение цветом, если результат в 3 столбце только выходные дни
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
нет, нет. Их там 15 после запятой.
Если мне не изменяет мой склероз, то Эксель согласно IEE754 оперирует в принципе 15-ю значащами цифрами в числе, не важно, до запятой или после.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
не важно, до запятой или после
да. И на скрине их тоже 15 :) Т.е. как бы должно звучать: не более 15-значащих чисел до запятой и не более 15-значащих чисел после запятой. И исходно в файле ровно 15 знаков после запятой для обсуждаемых чисел. Я это имел ввиду, чтобы никого не ввело в заблуждение 17 значащих чисел :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
15 после запятой, но нужно сильно постараться их увидеть.
Я кстати тогда их и не увидел, я только недавно PQ поставил. А иначе и не увидеть (схема это уже преобразование).
И кстати чтоб они сравнялись - нужно только в А1 поправить. Так что схема врёт.
 
Цитата
Hugo написал:
чтоб они сравнялись - нужно только в А1 поправить. Так что схема врёт.
не врет. Предположу, что когда меняешь в А1, то они оба становятся 12.122999999999999....
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Не, PQ говорит что тогда оба 12,123 (ранее так было только в B1)
Изменено: Hugo - 09.11.2020 18:31:19
 
Цитата
Hugo написал:
ранее так было только в B1
а вот схема говорит иное :) Я не просто так на схему обращаю внимание - такое поведение ранее было уже замечено в выгрузках из 1С. И числа становились корректными только после F2-Enter. При этом не все числа Excel не мог отобразить как положено и работать с ними корректно, а лишь некоторые, как в этом случае. Связано, возможно с тем, что хвостик в виде 000000001 на конце воспринимается Excel-ем хуже, чем неокругленные 9-ки, с которыми у Excel проблем нет и их он может преобразовать в нужное число. Потому как на лицо проблема именно своевременного преобразования чисел в ячейках при извлечения их из глубин файла.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
А что за схема у xls?
Я посмотрел - не нашёл там значений.
 
Цитата
Hugo написал:
А что за схема у xls?
Игорь, как уже упоминалось - самое простое это сохранить в один из новых форматов. Сколько ни смотрел на разные файлы - никаких дополнительных "лишних" преобразований значений там не усмотрел ни разу. Excel я думаю файл создает на основе все тех же бинарных недр самого файла xls и просто оборачивает их в более открытый XML. Ничего по пути не преобразовывая.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Sveta, здравствуйте
Вы ошиблись темой. Найдите тему по своему вопросу или создайте новую в соответствии с правилами
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх