Собственно, вопроса нет, но я тут очень сильно офигел, когда увидел что обычное сравнение 2ух ячеек на равенство типа =A1=B1 не учитывает регистр Есть функция =СОВПАД(), которая учитывает регистр, но не различает числа и числа-как-текст
По-моему, это не что иное, как очередная (пусть и задокументированная) глупость от мелкомягких Главное, многие функции регистрозависимы, но при этом проверка на банальное равенство этот регистр игнорирует Я, конечно, знатно офигел от таких дел …
P.S.: вопросов к функции =СОВПАД() у меня нет - она сравнивает текст, а значит числа перед сравнением преобразовываются и всё ОК Вопросы к сравнению через равенство - ведь строки "ВАСЯ" и "вася" не должны быть равны при простом сравнении "в лоб" через "=". Получается, для полноценной проверки на листе, мне теперь нужно использовать 2 эти функции + =ЕСЛИ(), что, конечно очень неудобно и глупо, если честно…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: не различает числа и числа-как-текст
потому что она вообще не различает числа, а переводит любое значение в текст. Это легко проверить, если записать в одну ячейку число 1234567890123456789, а в другую текст "1234567890123456789". В первой ячейке все символы после второй 5-ки будут заменены на нули(т.к. Excel не может оперировать такими числами), а во второй - нет. И эти два значения функция СОВПАД посчитает разными. Если бы она переводила их в числа - то посчитала бы одинаковыми. Даже если напрямую в функцию занести эти значения(=СОВПАД(1234567890123456789;"1234567890123456789")), то она вернет ЛОЖЬ, т.к. первым аргументом записано число и еще до того, как функция начнет что-то сравнивать Excel отсечет все после второй 5-ки. А второй аргумент останется как есть. А вот если передать такое же в СЧЁТЕСЛИ(которая как раз приводит все что можно к числу) - она посчитает это совпадением.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Дмитрий(The_Prist) Щербаков, функция =СОВПАД() мне вообще не интересна - я о ней до сегодняшнего дня даже не знал (искал другие варианты сравнения после откровения с "=") и как раз её поведение у меня вопросов не вызывает (ты всё правильно сказал, что она сравнивает текстовые строки) Вопросы к сравнению равенством. Может меня, конечно, VBA разбаловал, но там равенство есть равенство и я очень удивлён, что на листе не так. Если бы я хотел сравнить без учёта регистра, то преобразовал бы каждый аргумент к одному и всё, а тут вообще капец — строки сравнивай через совпад, а числа с псевдочислами через равенство. Глупо и неудобно
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous, Ну, в ПОИСКПОЗ такая же история, тоже не учитывает регистр. И когда, например я использую ее в паре ИНДЕКС+ПОИСКПОЗ я всегда об этом помню. Так что для меня, то что = не учитывает регистр- вот ни сколько не удивительно)
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
Dyroff, да к функциям, в принципе, вопросов нет. Хотелось бы (лично мне) , конечно, по-умолчанию использовать строгое бинарное сравнение и иметь возможность опционально приравнивать числа к псевдочислам и игнорировать регистр. Я бы разрабатывал как-то так (собственно, я именно такие функции на VBA и написал для своих сотрудников ) и не думаю, что это сильно бы повлияло на производительность. Пусть каждый сам решает, как ему сравнивать, чтобы не надо было использовать никакие "костыли" и "обёртки". Вот это было бы "для людей", а сейчас получается, что нужно на собственном опыте "шишки набивать", ну или использовать тома очешуительных мануалов в качестве туалетного прикроватного чтива — ну такое себе. Я, конечно, многое успел узнать про Excel, нюансы его работы и всё такое, но считаю, что для простого пользователя всё слишком уж неочевидно. Можно гораздо лучше и как бы мелкомягкие не обожглись на таком отношении…
нашёл 39 вдохновляющих цитат Йоды - можно ответить практически любой, но мне больше всего понравилась «Вы найдете хорошее в плохом, когда будете спокойны и пассивны» На самом деле, я нередко использую PQ и признаю его важность во многих вопросах, однако в силу специфики своей работы "разгрести данные и построить структуру" в основном использую всё-таки универсальные инструменты на VBA
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
да, я об этом и написал - она постарается привести к числу все, что можно к нему привести несмотря на любые потери. Вот здесь более подробно расписывал какие еще бяки с числами как текст можно ожидать от СЧЁТЕСЛИ: Как подсчитать количество повторений
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как всегда ноги растут из запятой и нелогичного поведения Excel в части вытаскивания значений из недр файла и помещения информации об оных в ячейку. При этом какие-то функции считывают значения ячейки As Is(которые работают с бинарным представлением значения), а какие-то что-то еще пытаются "определить и преобразовать". Например, если записать в приложенном Игорем файле функцию: =ВПР(A1;B1;1;0) то она не найден соответствия. Так что здесь не совсем VBA виноват. Потому что на самом деле значения-то такие:
Код
"A1"=12.123000000000001
"B1"=12.122999999999999
P.S. Кстати, PQ видит значения правильно - т.е. со всеми хвостами. При этом, если в каждую ячейку встать, нажать F2-Enter - то числа преобразуются и будут уже без хвостов. Обычно такие феномены наблюдаются в случаях, когда файл выгружен из 1С или другой сторонней программы. Видимо что-то там в схеме заставляет Excel думать "иначе".
Дмитрий(The_Prist) Щербаков, а где Вы увидели эти хвосты? В VBA их не видно, форматом ячейки тоже не показывает. А, вижу PQ у А1 показывает 12,123000000000001, а второе так и есть 12,123
Hugo написал: А вот кстати как эти два значения сравнит PQ?
А вот так:
Т.е. в ячейке А1 есть число с 17-ю значащими знаками. Эксель это дело обрезает и в строке формул показывает, что оно = 12,123. Но VBA и PQ видят что это не так и сравнивают с учетом этих двух обрезаемых цифр. Ну и до кучи DAX тоже видит хвосты.
нет, нет. Их там 15 после запятой. Плюс скорее всего не сам Excel обрезает, а лишь определенные реализации формул. Ведь как я уже писал ВПР и некоторые схожие с ней функции тоже видят эти знаки.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Да, ВПР тоже не находит совпадения. А ведь по логике должно - оба числа, оба одинаковые как их в самом Экселе ни крути, вот как выловить допустим в огромном диапазоне на каком значении косяк? Хотя если их перемножать/делить, то вся разница пропадает.
Добрый день Можно настроить в екель следующее: в 1 столбец - дата, 2 столбец- дата, 3 столбец - количество дней Необходимо настроить выделение цветом, если результат в 3 столбце только выходные дни
да. И на скрине их тоже 15 Т.е. как бы должно звучать: не более 15-значащих чисел до запятой и не более 15-значащих чисел после запятой. И исходно в файле ровно 15 знаков после запятой для обсуждаемых чисел. Я это имел ввиду, чтобы никого не ввело в заблуждение 17 значащих чисел
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
15 после запятой, но нужно сильно постараться их увидеть. Я кстати тогда их и не увидел, я только недавно PQ поставил. А иначе и не увидеть (схема это уже преобразование). И кстати чтоб они сравнялись - нужно только в А1 поправить. Так что схема врёт.
а вот схема говорит иное Я не просто так на схему обращаю внимание - такое поведение ранее было уже замечено в выгрузках из 1С. И числа становились корректными только после F2-Enter. При этом не все числа Excel не мог отобразить как положено и работать с ними корректно, а лишь некоторые, как в этом случае. Связано, возможно с тем, что хвостик в виде 000000001 на конце воспринимается Excel-ем хуже, чем неокругленные 9-ки, с которыми у Excel проблем нет и их он может преобразовать в нужное число. Потому как на лицо проблема именно своевременного преобразования чисел в ячейках при извлечения их из глубин файла.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Игорь, как уже упоминалось - самое простое это сохранить в один из новых форматов. Сколько ни смотрел на разные файлы - никаких дополнительных "лишних" преобразований значений там не усмотрел ни разу. Excel я думаю файл создает на основе все тех же бинарных недр самого файла xls и просто оборачивает их в более открытый XML. Ничего по пути не преобразовывая.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Sveta, здравствуйте Вы ошиблись темой. Найдите тему по своему вопросу или создайте новую в соответствии с правилами
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄