Проверка ввода времени (Microsoft Excel)
Excel предоставляет ряд функций, которые возвращают значение True или False в зависимости от содержимого ячейки. Например, ISBLANK возвращает True, если ячейка пуста, ISERR возвращает True, если ячейка содержит значение ошибки, а ISTEXT возвращает True, если ячейка содержит текст. Вы можете задаться вопросом, можно ли определить, содержит ли ячейка время.
Короткий ответ: нет, вы не можете — Excel не содержит функции, указывающей, содержит ли ячейка время. Причина проста: время и даты в Excel технически представляют собой не что иное, как числа. Дата — это любое число в диапазоне от 1 до 2958465, которые представляют даты с 01.01.1900 по 31.12.9999. Если вы добавите к числу десятичную часть, то это будет представлять время (0 — полночь, 0,25 — 6:00, 0,5 — полдень и т. Д.).
Зная диапазон значений, которые могут использоваться для дат и времени, а также тот факт, что ячейка, содержащая время, должна быть правильно отформатирована для отображения времени, вы можете создать формулу, которая укажет, содержит ли ячейка время:
=IF(AND(CELL("format",B2)>="D6",CELL("format",B2)<="D9"), "Time Format","Not Time Format")
Эта формула проверяет форматирование, примененное к ячейке B2. Если форматирование является одним из наиболее часто используемых форматов времени, он возвращает текст «Формат времени». Если используется другое форматирование, формула возвращает «Не формат времени».
Другой подход — проверить, является ли значение в ячейке B2 допустимым значением времени. Вы можете сделать это, используя следующую формулу:
=IF(TIMEVALUE(TEXT(B2,"hh:mm:ss"))=B2, "Time Entry", "Not a Time Entry")
Функция работает нормально, пока ячейка B2 содержит только время. Если ячейка содержит и дату, и время, функция всегда возвращает «Not a Time Entry».
Чтобы получить лучшее из обоих миров — проверку форматов и значения в ячейке, — подумайте о создании пользовательской функции в VBA. Причина проста: VBA включает функцию IsDate, которая не только просматривает текущий диапазон числа, но также проверяет, отформатирован ли ячейка как дата. Следующий макрос предоставляет пример того, как вы можете создать такую функцию:
Function IsTime(rng As Range) As Boolean Dim sValue As String sValue = rng.Cells(1).Text On Error Resume Next IsTime = IsDate(TimeValue(sValue)) On Error GoTo 0 End Function
Чтобы использовать функцию, введите в ячейку следующую формулу:
=IsTime(B2)
Функция считывает, как отображается значение (используя свойство text объекта ячейки), а затем пытается преобразовать его с помощью функции TIMEVALUE. Если это дата (определяемая функцией IsDate), то отображается действительное время. Если это не дата, VBA генерирует ошибку, которую код запрограммирован игнорировать.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (9699) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Checking_for_Time_Input [Проверка ввода времени]
.