Я должен убедиться, что пользователи определенной электронной таблицы вводят данные о времени в военное время. Я нахожу, что некоторые люди пропускают двоеточие, и это вызывает проблемы. Есть ли способ форсировать определенное форматирование для диапазона ячеек?
4 ответа
Я использую Excel 2010, поэтому я не уверен, где находится эквивалентная опция в Excel 2003.
- Выберите ячейки, которые вы хотите ограничить.
- Отформатируйте ячейки с соответствующим числовым форматом «чч: мм».
- На ленте "Данные" (меню, может быть,?) Выберите "Проверка данных".
- В разделе "Настройки", "Критерии проверки" установите:
Разрешить = Время
Игнорировать пусто = Да
Данные = между
Время начала = 0:00
Время окончания = 23:59:59
(глупая вещь не примет "менее 24:00") - Пользователь "Ошибка оповещения", установите:
Стиль = Стоп
Заголовок = Ввод времени
Сообщение об ошибке = Пожалуйста, введите время в формате чч: мм с двоеточием. - Нажмите "ОК".
Старый пост, но это может помочь в поиске в Google (также я не эксперт по Excel)
Отформатируйте ячейку как текст с пользовательским форматом
00\:00
Это позволит пользователям вводить военное время в ячейку без ":"Установите параметры проверки данных в ячейке (EG E16) как пользовательские с помощью следующей формулы
=AND(ISNUMBER(E16),(VALUE(LEFT(TEXT(E16,"00\:00"),2))>=0),(VALUE(LEFT(TEXT(E16,"00\:00"),2))<=23),(VALUE(RIGHT(TEXT(E16,"00\:00"),2))>=0),(VALUE(RIGHT(TEXT(E16,"00\:00"),2))<=59))
Валидация проверяет, является ли это число, и затем, если сторона HH значения времени находится между 0 и 23, и затем, если MM находится между 0 и 59.
Я использую то же самое, чтобы ограничить военное время, однако при проверке данных принимаются жирные цифры (три цифры после двоеточия), а затем отображается неправильное время. Например, если вы хотите ввести 13:44 для своего времени и случайно поставить 13:444, это не только займет, но покажет время 20:24
Это время 20:24 - это то, что я ввел для часов (13) плюс 444 минуты, преобразованные в часы: минуты (7:24), поэтому вместо желаемого 13:44 оно дает 13:00 + 7:24 или 20: 24
Теперь я понимаю математику и почему Excel конвертирует 444 минуты в 7:24, но это НЕ должно происходить в записи проверки данных. Поскольку это проверка данных, следует либо усечь 444 до 44, либо выдать сообщение об ошибке.
Я хотел бы предложить, чтобы VBA (Macro) позаботился о вводе времени в указанном столбце или диапазоне. Этот макрос преобразует любые 4-значные значения в соответствующий формат времени.
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Dim xHour As String
Dim xMinute As String
Dim xWord As String
Application.EnableEvents = False
xWord = Format(Target.Value, "0000")
xHour = Left(xWord, 2)
xMinute = Right(xWord, 2)
On Error Resume Next
Target.Value = TimeValue(xHour & ":" & xMinute)
On Error Resume Next
Application.EnableEvents = True
End Sub
NB
- Если вы введете
1725
макрос преобразует его в05:25:00 PM
. Range ("A:A")
является редактируемым, он также должен бытьRange("A1:A10")
илиRange("B10:C10")
.