Почему сравнение дат (с использованием функции «ЕСЛИ») возвращает неожиданный результат?

У меня есть список дат, которые я хочу разделить на две категории. Даты до 21.06.2024 и даты после. У меня даты в такой записи: 19-09-2024 06:45

Я создал функцию if, но ее результаты оказались не такими, как я ожидал. Я пытался понять почему, но так и не понял.

Это функция Excel:

=ALS(TEKST(W2;"dd-mm-jjjj")<"21-06-2024";"1";"2")

как заявлено, дата имеет такой формат: 19-09-2024 06:45

Я получаю «1» за 19 сентября 2024 г., хотя должно быть 2. Я получаю «1» для всех дат до 08.01.2024. 31.07.2024 возвращает 2 (как и ожидалось). Затем 20.07.2024 снова возвращает 1. а с 30.06.2024 возвращается 2. Затем, 20 июня 2024 г., он снова возвращает 1.

Так что на самом деле я смотрю только на дневную часть даты, а не на всю дату.

Я был в отпуске несколько недель, поэтому моему мозгу, вероятно, потребовалось некоторое время, чтобы снова начать работать оптимально, но я не могу этого понять.

редактировать: добавлено «datevalue» в функцию if, чтобы функция сравнивала две даты.

=ALS(C2<DATUMWAARDE("21-6-2024");"1";"2")

Вы сравниваете текст, а не даты. Какой формат даты в вашей системе?

Ike 12.08.2024 11:16

@ike Показан формат даты.

rotabor 12.08.2024 11:31
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто используйте

=IF(W2<DATE(2024;6;21);1;2)

Ожидание W2 содержит дату, а не текст. Формат отображения может варьироваться.

Если W2 — текст

=IF(DATEVALUE(W2)<DATE(2024;6;21);1;2)

Вы можете сравнивать даты в виде текста, но вам нужно их правильно выразить.

=ALS(TEKST(W2;"jjjj-mm-dd")<"2024-06-21";"1";"2")

Текст сравнивается слева направо, поэтому вам нужно поместить самую значительную часть даты слева и сохранить длину полей 4-2-2.

Вместо DATE вы также можете использовать буквальную строку и добавить ноль, чтобы превратить ее в серийный номер: =IF(W2>"1-06-2024"+0;"1";"2")

Paul 12.08.2024 14:25

@Paul Интересный трюк. Это может помочь в некоторых случаях.

rotabor 12.08.2024 14:28

Другие вопросы по теме