Оператор IF в Excel, который смотрит на значение ячейки, являющееся датой

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

До сих пор я придумал что-то вроде этого, но это явно не работает:

=if('TRACKING FILE'!I10=DATE,'TRACKING FILE'!I10, "")

person Mathieu J    schedule 28.06.2012    source источник
comment
Если вы уверены, что он будет отформатирован как дата, вы можете использовать If(Left(Cell("format",myCell),1) = "D", myCell, "")   -  person Scott Holtzman    schedule 28.06.2012
comment
Спасибо за помощь, Скотт.   -  person Mathieu J    schedule 28.06.2012
comment
Вы имеете в виду даты, которые считает Excel, или даже фактические даты, такие как 1/1/1800?   -  person Siddharth Rout    schedule 28.06.2012
comment
Ну, это настоящие даты, но они также отформатированы как даты в Excel. Я не слишком уверен в том, что вы спрашиваете.   -  person Mathieu J    schedule 29.06.2012


Ответы (2)


Что-то типа:

=IF(NOT(ISERROR(DATEVALUE(TEXT(A1,"mm/dd/yyyy")))),TEXT(A1,"mm/dd/yyyy"),"")

Это копирует числовое представление дат или типичных дат. Измените «истину» в соответствии с вашими потребностями, в зависимости от того, что вы собираетесь с ней делать.

=IF(NOT(ISERROR(DATEVALUE(TEXT(F9,"mm/dd/yyyy")))),F9,"")

=IF(NOT(ISERROR(DATEVALUE(TEXT(F9,"mm/dd/yyyy")))),DATEVALUE(TEXT(F9,"mm/dd/yyyy")),"")
person user1166147    schedule 28.06.2012
comment
На самом деле, это сработало бы для этого, но оно отформатировало бы его для отображения в виде даты в новом поле. - person user1166147; 28.06.2012
comment
Правильно, @Mathieu J, это работает, как и числовые даты. - person user1166147; 28.06.2012
comment
Это работает и для меня. Однако я не думаю, что преобразование должно быть в текст. ОП попросил вернуть либо дату, либо пробел. - person Doug Glancy; 28.06.2012
comment
Это правда @dDoug, но если вы не укажете это (или что-то еще, формат не был указан), он будет отображаться как число. Я предполагаю, что он хочет заметно узнаваемое свидание. - person user1166147; 28.06.2012
comment
Я исправлен, плохое тестирование мной! Удаление моего комментария. И +1 за хорошие вещи! - person Scott Holtzman; 28.06.2012
comment
Я в основном использую это для проверки данных между двумя вкладками в электронной таблице. На одной вкладке есть столбец с датами и пробелами, и я просто хочу скопировать столбец точно так же, как на другой вкладке. - person Mathieu J; 28.06.2012
comment
@MathieuJ -> Если вы просто проверяете пробелы, есть гораздо более простая формула =If(isblank(myCell),"",myCell) where myCell is your Cell Reference Однако, если ваши данные имеют смешанный контент, используйте ответы выше. - person Scott Holtzman; 28.06.2012
comment
Продолжает ли он работать, когда его используют люди с разными региональными настройками? Я не уверен, что это стабильно, но я хотел бы знать. - person html_programmer; 28.06.2012
comment
@ user1166147, я предполагал, что OP отформатирует столбец, в котором находится формула, для даты. Я думаю, что это предпочтительнее, чем текстовые сообщения :). Я сразу же проголосовал за ваш ответ. - person Doug Glancy; 28.06.2012
comment
Лол спасибо! Мне было интересно, потому что функция datevalue требует явного формата. - person html_programmer; 28.06.2012
comment
Искренне благодарю всех за помощь, ребята. Это отличное место. Спасибо еще раз. - person Mathieu J; 28.06.2012

В Excel нет прямой функции isdate, но вы можете создать свою собственную функцию в VBA и применить ее на своем листе.

Function checkDate(oRange As Range) as boolean
    checkDate = isdate(oRange)
End Function 

В вашем рабочем листе:

=IF(checkDate(C8) = TRUE;C8;"")

Вам нужно задать формат самостоятельно, так как Excel стандартно отображает его в виде числа.

person html_programmer    schedule 28.06.2012
comment
К сожалению, я должен придерживаться формул внутри ячеек и не могу использовать макросы на этих листах. Тем не менее, я ценю помощь и буду иметь это в виду на будущее. - person Mathieu J; 28.06.2012
comment
@MathieuJ: тогда почему вы пометили свой вопрос как VBA?... (И, чтобы было ясно, это не макрос, а определяемая пользователем функция, которую можно использовать как формулу в ячейке. ) - person Jean-François Corbett; 29.06.2012
comment
Содержимое вашей функции может быть просто checkDate = IsDate(oRange). Прямо сейчас вы говорите If True Then True Else False, что излишне многословно. - person Jean-François Corbett; 29.06.2012
comment
@ Jean-FrançoisCorbett, я пометил это как VBA, потому что, хотя я не могу использовать vba для этой конкретной проблемы, я не против узнать, как VBA может помочь мне с той же проблемой в будущем. - person Mathieu J; 29.06.2012