Empurrar linha automaticamente para baixo

0

Estou tentando criar um documento de planilha de horas e quero que ele seja formatado

-----------------------------------------
|   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   |
-----------------------------------------

com a data mais recente no topo. Eu quero fazer com que, quando eu inserir os tempos na linha 1/5/2014, uma nova linha seja substituída automaticamente em 1/5/2014 com

-----------------------------------------
|   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   |
-----------------------------------------

Isso é possível no Excel?

    
por Person4645 06.01.2015 / 00:55

1 resposta

0

Uma macro de evento Worksheet_Change funcionaria bem para isso. Clique com o botão direito do mouse na guia de nome da planilha e escolha Exibir código. Quando o VBE abrir, cole o seguinte no painel da direita intitulado algo como Livro1 - Folha1 (Código) .

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

Toque em Alt + Q para retornar à sua planilha. Depois que B2 e C2 tiverem ambos os valores de tempo inseridos, uma nova linha será adicionada com as fórmulas apropriadas.

Eu usei a fórmula =(C2-B2)*24 na coluna D.

    
por 06.01.2015 / 02:41