Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   Проблема при сравнении дат в Excel (http://forum.oszone.net/showthread.php?t=298289)

ДмитрийБел 13-04-2015 12:38 2495064

Проблема при сравнении дат в Excel
 
Здравствуйте!

Через программу выгружаю заданный массив данных в Excel и уже провожу различные вычисления в Excel. Возникла проблема, следующего вида:

Сравниваю две даты через функцию "ЕСЛИ". Последняя дата в колонке должна быть больше первой, если это так, то пишется "правда", а если нет, то "ложь". Как видим на скрине 01.04 больше, чем 23.03, но при это пишется "ложь!", вместо "правда".


Далее идем в первую сравниваемую колонку и просто нажимаем на нее (редактируем) и нажимаем снова "enter" (сохраняем изменения)


и видим следующее:


Выражение считает уже правильно!!!
Менять формат ячеек - не помогает. Пробовал в разных версиях работать - 2003 и 2007, но результат один и тот. В ручную каждую запись изменять и проводить такие операции, когда записей тысячи и на постоянной основе обработка идет - не вариант... Если даты в одном месяце, то сравнение идет по умолчания правильное. Может кто подскажет, как можно выйти из данной ситуации. За ранее спасибо!!!

Iska 13-04-2015 13:12 2495073

ДмитрийБел, дело за малым — упакуйте образец Вашей рабочей книги, приведённой на скриншоте, в архив и выложите последний здесь или на RGhost.

ДмитрийБел 13-04-2015 13:51 2495092

Вот:

Iska 13-04-2015 14:18 2495101

ДмитрийБел, у Вас в столбце «IssueDate» не числовые данные, а текстовые. Посему никакие манипуляции с форматом отображения не дадут результата.

Самый простой способ перевести из текста в число (коим и является в реальности дата) следующий:
  • введите в какую-либо пустую ячейку (например, в «L2») число «1»;
  • скопируйте эту ячейку в буфер обмена;
  • выделите потребный диапазон («I2:I48»);
  • сделайте специальную вставку (\Правка\Специальная вставка… — для Office 2003);
  • в диалоговом окне «Специальная вставка…» укажите следующее:
Скрытый текст

Затем отформатируйте числовые значения в ячейках как дату.

Конечно, самым правильным будет по возможности настроить Ваше приложение, из которого Вы осуществляете экспорт, так, чтобы в ячейках с датой были именно числовые значения дат, а не текст в виде даты.

okshef 13-04-2015 14:34 2495103

ДмитрийБел, попробуйте перед J2 и I2 в вашей формуле сравнения поставить "--", т.е.
Код:

=если(--J2>--I2;"правда";"ложь!")

Iska 13-04-2015 14:43 2495106

okshef, правильно ли я понимаю, что:
  1. Это тоже попытка перевода в число.
  2. И автору достаточно будет «--» только перед «I2»?

okshef 13-04-2015 15:07 2495116

1. Да
2. Я поправил пост

Возможно (не на чем сейчас проверить) достаточно даже J2-I2>0

Iska 13-04-2015 15:21 2495122

okshef, спасибо, ясно. Значит, итоговый вывод таков: необходимо и достаточно любым возможным способом привести текстовое значение к числу.

Цитата:

Цитата okshef
Возможно (не на чем сейчас проверить) достаточно даже J2-I2>0 »

Да, достаточно. Я проверил.

ДмитрийБел 13-04-2015 18:34 2495215

Спасибо большое!!!
Можно использовать одно на выбор из двух вариантов?

=ЕСЛИ(--J2>--I2;"правда";"ложь")
или
=ЕСЛИ(J2-I2>0;"правда";"ложь")

Последнее выражение не понятно, но главное работает!

Может ещё подскажете два вопроса:
1) можно ли вместо "ложь", чтобы ячейка закрашивалась в красный цвет, к примеру? Нашел формулу для определения цвета заливки ячейки, а на заливку нет.
2) можно ли через "ЕСЛИ" сравнивать два значения в одной ячейке т.е. J2>I2 и J2>H2 - если сохраняются два условия сразу, то "правда"?

Iska 13-04-2015 20:01 2495281

Цитата:

Цитата ДмитрийБел
Последнее выражение не понятно, но главное работает! »

Любое. И там, и там происходит то же самое, что я описал выше, но только на уровне формулы, а не исходной ячейки.

В первом случае происходит перевод текстового содержимого ячейки в число посредством двух унарных операций «-» (насколько я это понимаю), причём для обеих целевых ячеек. Во втором случае также происходит неявное преобразование в процессе вычисления разницы между значениями ячеек — как я понимаю, среда производит попытку неявного преобразования значения ячеек из текста в число.

Цитата:

Цитата ДмитрийБел
1) можно ли вместо "ложь", чтобы ячейка закрашивалась в красный цвет, к примеру? Нашел формулу для определения цвета заливки ячейки, а на заливку нет. »

Можно. Задайте результат не как текст, а, например, как булевы значения:
Код:

=ЕСЛИ(--J2>--I2;ИСТИНА;ЛОЖЬ)
или даже просто:
Код:

=--J2>--I2
затем используйте для ячеек «Условное форматирование».
Цитата:

Цитата ДмитрийБел
2) можно ли через "ЕСЛИ" сравнивать два значения в одной ячейке т.е. J2>I2 и J2>H2 »

Нет, нельзя. Используйте такую функцию рабочего листа для операции:
Код:

=И(--J2>--I2;--J2>--H2)
и соответственно вся формула будет выглядеть как:
Код:

=ЕСЛИ(И(--J2>--I2;--J2>--H2);ИСТИНА;ЛОЖЬ)

ДмитрийБел 14-04-2015 15:35 2495624

Цитата:

Цитата Iska
Можно. Задайте результат не как текст, а, например, как булевы значения: »

Iska, спасибо! А нельзя ли как через команду и без дополнительных движений это всё сделать?
Вместо "ложь" формулу какую (условно привожу) =ЗАЛИВКА(#FF15), где #FF15 - красный цвет.
Вся формула, чтобы была такая:
=ЕСЛИ(--J2>--I2;"правда";"=ЗАЛИВКА(#FF15)")
Или такие формулы и сложные конструкции в Excel отсутствуют?

Iska 14-04-2015 16:35 2495657

В Excel из комплекта 2003-го Office'а такого нет. Форматирование — это форматирование, данные — это данные. По новым версиям подскажут знающие коллеги.

А что Вы имели в виду под этим:
Цитата:

Цитата ДмитрийБел
Нашел формулу для определения цвета заливки ячейки »

?

ДмитрийБел 14-04-2015 21:22 2495780

Цитата:

Цитата Iska
В Excel из комплекта 2003-го Office'а такого нет. »

2007 используется, а на скринах тренеровался на другом ПК с 2003.
Цитата:

Цитата Iska
? »

Функция возвращает код цвета заливки указанной ячейки.
=ЦВЕТЗАЛИВКИ() и в скобках указать необходимую ячейку.

Разобрался я.))) Это надстройка для Excel (VBA-Excel), которая расширяет функции т.е. нужно скачивать и подвязывать к Excel.

Iska 14-04-2015 21:52 2495793

Я так примерно и понял, что это на самом деле внешняя функция VBA, а не встроенная. Я её видел в результатах поиска то ли на второй, то ли на третьей странице. Ну, и вроде как они там денюжку хотят за эту надстройку, хотя, полагаю, при большом желании можно и самому написать.


Время: 23:07.

Время: 23:07.
© OSzone.net 2001-