![]() |
Проблема при сравнении дат в Excel
Здравствуйте!
Через программу выгружаю заданный массив данных в Excel и уже провожу различные вычисления в Excel. Возникла проблема, следующего вида: Сравниваю две даты через функцию "ЕСЛИ". Последняя дата в колонке должна быть больше первой, если это так, то пишется "правда", а если нет, то "ложь". Как видим на скрине 01.04 больше, чем 23.03, но при это пишется "ложь!", вместо "правда". ![]() Далее идем в первую сравниваемую колонку и просто нажимаем на нее (редактируем) и нажимаем снова "enter" (сохраняем изменения) ![]() и видим следующее: ![]() Выражение считает уже правильно!!! Менять формат ячеек - не помогает. Пробовал в разных версиях работать - 2003 и 2007, но результат один и тот. В ручную каждую запись изменять и проводить такие операции, когда записей тысячи и на постоянной основе обработка идет - не вариант... Если даты в одном месяце, то сравнение идет по умолчания правильное. Может кто подскажет, как можно выйти из данной ситуации. За ранее спасибо!!! |
ДмитрийБел, дело за малым — упакуйте образец Вашей рабочей книги, приведённой на скриншоте, в архив и выложите последний здесь или на RGhost.
|
Вот:
|
ДмитрийБел, у Вас в столбце «IssueDate» не числовые данные, а текстовые. Посему никакие манипуляции с форматом отображения не дадут результата.
Самый простой способ перевести из текста в число (коим и является в реальности дата) следующий:
Скрытый текст
![]() Затем отформатируйте числовые значения в ячейках как дату. Конечно, самым правильным будет по возможности настроить Ваше приложение, из которого Вы осуществляете экспорт, так, чтобы в ячейках с датой были именно числовые значения дат, а не текст в виде даты. |
ДмитрийБел, попробуйте перед J2 и I2 в вашей формуле сравнения поставить "--", т.е.
Код:
=если(--J2>--I2;"правда";"ложь!") |
okshef, правильно ли я понимаю, что:
|
1. Да
2. Я поправил пост Возможно (не на чем сейчас проверить) достаточно даже J2-I2>0 |
okshef, спасибо, ясно. Значит, итоговый вывод таков: необходимо и достаточно любым возможным способом привести текстовое значение к числу.
Цитата:
|
Спасибо большое!!!
Можно использовать одно на выбор из двух вариантов? =ЕСЛИ(--J2>--I2;"правда";"ложь") или =ЕСЛИ(J2-I2>0;"правда";"ложь") Последнее выражение не понятно, но главное работает! Может ещё подскажете два вопроса: 1) можно ли вместо "ложь", чтобы ячейка закрашивалась в красный цвет, к примеру? Нашел формулу для определения цвета заливки ячейки, а на заливку нет. 2) можно ли через "ЕСЛИ" сравнивать два значения в одной ячейке т.е. J2>I2 и J2>H2 - если сохраняются два условия сразу, то "правда"? |
Цитата:
В первом случае происходит перевод текстового содержимого ячейки в число посредством двух унарных операций «-» (насколько я это понимаю), причём для обеих целевых ячеек. Во втором случае также происходит неявное преобразование в процессе вычисления разницы между значениями ячеек — как я понимаю, среда производит попытку неявного преобразования значения ячеек из текста в число. Цитата:
Код:
=ЕСЛИ(--J2>--I2;ИСТИНА;ЛОЖЬ) Код:
=--J2>--I2 Цитата:
Код:
=И(--J2>--I2;--J2>--H2) Код:
=ЕСЛИ(И(--J2>--I2;--J2>--H2);ИСТИНА;ЛОЖЬ) |
Цитата:
Вместо "ложь" формулу какую (условно привожу) =ЗАЛИВКА(#FF15), где #FF15 - красный цвет. Вся формула, чтобы была такая: =ЕСЛИ(--J2>--I2;"правда";"=ЗАЛИВКА(#FF15)") Или такие формулы и сложные конструкции в Excel отсутствуют? |
В Excel из комплекта 2003-го Office'а такого нет. Форматирование — это форматирование, данные — это данные. По новым версиям подскажут знающие коллеги.
А что Вы имели в виду под этим: Цитата:
|
Цитата:
Цитата:
=ЦВЕТЗАЛИВКИ() и в скобках указать необходимую ячейку. Разобрался я.))) Это надстройка для Excel (VBA-Excel), которая расширяет функции т.е. нужно скачивать и подвязывать к Excel. |
Я так примерно и понял, что это на самом деле внешняя функция VBA, а не встроенная. Я её видел в результатах поиска то ли на второй, то ли на третьей странице. Ну, и вроде как они там денюжку хотят за эту надстройку, хотя, полагаю, при большом желании можно и самому написать.
|
Время: 23:07. |
Время: 23:07.
© OSzone.net 2001-