Я пытаюсь сделать документ табеля рабочего времени, и я хочу, чтобы он был отформатирован

-----------------------------------------
|   Date   | Time In | Time Out | Hours |
-----------------------------------------
| 1/5/2014 |         |          |   0   |
-----------------------------------------
| 1/4/2014 |  09:00  |  12:00   |   3   |
-----------------------------------------
| 1/3/2014 |  09:30  |  14:00   |  4.5  |
-----------------------------------------
| 1/2/2014 |  08:00  |  17:00   |   9   |
-----------------------------------------
| 1/1/2014 |  12:00  |  13:00   |   1   |
-----------------------------------------

с самой последней датой наверху. Я хочу сделать так, чтобы при вводе времени в строке 5 января 2014 года новая строка автоматически заменяла 5 января 2014 года на

-----------------------------------------
|   Date   | Time In | Time Out | Hours |
-----------------------------------------
| 1/6/2014 |         |          |   0   |
-----------------------------------------
| 1/5/2014 |  09:00  |  13:00   |   4   |
-----------------------------------------
| 1/4/2014 |  09:00  |  12:00   |   3   |
-----------------------------------------
| 1/3/2014 |  09:30  |  14:00   |  4.5  |
-----------------------------------------
| 1/2/2014 |  08:00  |  17:00   |   9   |
-----------------------------------------
| 1/1/2014 |  12:00  |  13:00   |   1   |
-----------------------------------------

Возможно ли это в Excel?

1 ответ1

0

Макрос события Worksheet_Change будет хорошо работать для этого. Щелкните правой кнопкой мыши на вкладке имени листа и выберите «Просмотреть код». Когда VBE откроется, вставьте следующее в правую панель с названием что-то вроде Book1 - Sheet1 (Код).

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("B2:C2")) Is Nothing Then
        If Application.Count(Range("B2:C2")) = 2 Then
            On Error GoTo Fìn
            Application.EnableEvents = False
            Range("A2:D2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
            Range("A2") = Range("A3").Value + 1
            Range("D2").Formula = Replace(Range("D3").Formula, 3, 2)
            Range("B2").Activate
        End If
    End If
Fìn:
    Application.EnableEvents = True
End Sub

Нажмите Alt+Q, чтобы вернуться на рабочий лист. Как только в B2 и C2 будут введены значения времени, будет добавлена новая строка с соответствующими формулами.

        Timecard добавить строки

Я использовал формулу =(C2-B2)*24 в столбце D.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .