Мне нужно захватить ячейку и поместить ее на другой лист только тогда, когда это дата. Есть ли способ, где я могу сказать, что = IF('Master Intake Tracker'!K7 = "Любая дата", "Мастер отслеживания потребления"!I7, "")........ любой способ сделать это? А также не захватывает ли клетка без ответа? так что если ячейка пуста, она не будет захвачена и отправлена на другой лист?
4 ответа
В качестве альтернативы вы можете использовать следующую пользовательскую функцию (которая просто делает функцию VBA доступной в электронной таблице:
Function IsADate(aCell As Range) As Boolean
If IsDate(aCell.Value) Then
IsADate = TRUE
Else
IsADate = FALSE
End If
End Function
Эта функция будет возвращать значение ИСТИНА, если ячейка имеет обычное значение Excel в формате даты или если в ней есть строка, в которой указана дата (например, «3 ноября 2012 г.»).
Использование будет простым:
=IF(ISADATE('Master Intake Tracker'!K7),'Master Intake Tracker'!I7,"")
Даты - это просто отформатированные числа в Excel - их сложно явно проверить на дату, но вы, вероятно, можете просто сделать это:
=IF('Master Intake Tracker'!K7>0,'Master Intake Tracker'!I7,"")
это соответствует логике формулы в вашем вопросе - если вы хотите вернуть саму дату, то измените на:
=IF('Master Intake Tracker'!K7>0,'Master Intake Tracker'!K7,"")
Используйте =DateValue
и позвольте Excel решить, является ли ваш ввод верной датой.
Предполагая, что ваша тестовая ячейка - A1, вы можете использовать эту формулу:
=IF(ISERROR(DATEVALUE(TEXT(A1,"MM/DD/YYYY"))),"no its not!","its a date!")
Подгонянный к вашему примеру:
=IF(ISERROR(DATEVALUE(TEXT('Master Intake Tracker'!K7,"MM/DD/YYYY"))),"",'Master Intake Tracker'!K7)
Ваш вопрос несколько расплывчатый и неоднозначный. Если вы имеете в виду «[это] дата, сохраненная как дата (в числовом представлении дат в Excel)?», То
=IF(AND(K7<=NOW(), K7>=(TODAY()-365)), …, "")
может быть хорошим местом для начала.