Когда вы вводите время в ячейку, Excel указывает наличие двоеточия между часами и минутами времени. Однако из-за положения двоеточия на клавиатуре ввод двоеточия для каждого вводимого значения времени может замедлить вас, особенно если у вас есть несколько значений времени для ввода.

По этой причине вы можете задаться вопросом, есть ли способ пропустить ввод двоеточия и ввести их автоматически или сразу.

Для их автоматического ввода требуется немного больше усилий, требующих использования макроса, о чем мы вскоре поговорим. Ввести сразу все двоеточия можно с помощью формулы, как показано ниже:

=TIMEVALUE(REPLACE(A1,3,0,":"))

В этой формуле предполагается, что значение времени (без двоеточия) находится в ячейке A1 и состоит из четырех цифр. Таким образом, если ячейка A1 содержит такое значение, как 1422, то формула возвращает 14:22 как фактическое значение времени. (Возможно, вам потребуется отформатировать ячейку как значение времени.)

Если ваша исходная ячейка ввода может содержать время, в котором используются только три цифры, например 813 вместо 0813, тогда вам нужно использовать немного другую формулу:

=TIME(LEFT(A1,LEN(A1)-2),RIGHT(A1,2),0)

Если вы предпочитаете, чтобы двоеточие вставлялось автоматически, вы можете использовать макрос. Вы можете создать макрос, который будет проверять диапазон ячеек, в которые вы планируете добавлять даты на лист, а затем вставлять двоеточие в запись. Это делается путем создания макроса, который запускается событием SheetChange. Следующий макрос является одним из таких:

Private Sub Workbook_SheetChange(ByVal Sh As Object, _   ByVal Target As Excel.Range)

Dim TimeStr As String

On Error GoTo EndMacro     If Application.Intersect(Target, Range("C7:D15")) Is Nothing Then         Exit Sub     End If     If Target.Cells.Count > 1 Then         Exit Sub     End If     If Target.Value = "" Then         Exit Sub     End If

Application.EnableEvents = False     With Target         If .HasFormula = False Then             Select Case Len(.Value)

Case 1 ' e.g., 1 = 00:01 AM                     TimeStr = "00:0" & .Value                 Case 2 ' e.g., 12 = 00:12 AM                     TimeStr = "00:" & .Value                 Case 3 ' e.g., 735 = 7:35 AM                     TimeStr = Left(.Value, 1) & ":" & _                     Right(.Value, 2)

Case 4 ' e.g., 1234 = 12:34                     TimeStr = Left(.Value, 2) & ":" & _                     Right(.Value, 2)

Case Else                     Err.Raise 0             End Select             .Value = TimeValue(TimeStr)

End If     End With     Application.EnableEvents = True

Exit Sub

EndMacro:

MsgBox "You did not enter a valid time"

Application.EnableEvents = True     ActiveCell.Offset(-1, 0).Select End Sub

Первое, что делает макрос, — проверяет, находятся ли только что введенные данные в диапазоне C7: D15. Если это не так, макрос завершает работу. Он также проверяет, что выбрана только одна ячейка и что ячейка не пуста. Если все эти критерии соблюдены, то макрос проверяет длину значения в ячейке и при необходимости дополняет его ведущими нулями. Этот макрос основан на макросе, найденном на сайте Чипа Пирсона, здесь:

http://cpearson.com/excel/DateTimeEntry.htm

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2412) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Entering_or_Importing_Times_without_Colons [Ввод или импорт времени без двоеточий].