У меня есть список дат, которые я хочу разделить на две категории. Даты до 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 Показан формат даты.
Просто используйте
=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 Интересный трюк. Это может помочь в некоторых случаях.
Вы сравниваете текст, а не даты. Какой формат даты в вашей системе?