Notifications
Clear all

Inserir colunas com dados se encontrar "00:00:00"

5 Posts
3 Usuários
0 Reactions
704 Visualizações
(@danuca9)
Posts: 0
New Member
Topic starter
 

Bom dia,

Não sei se me podem ajudar, sou relativamente novo no vba, e precisava que o meu programa fizesse algumas coisas.
Portanto, eu tenho dados com frequência variável(pode ser minuto a minuto, segundo a segundo) e queria dividi-los por dias, em colunas diferentes para depois fazer um gráfico com várias séries.

Pra já, o que eu precisava era de detetar a meia noite ("00:00:00") que significa que mudou de dia, e passar os valores correspondentes a essa data para a coluna seguinte.
Os dados são deste género:
00:22:00 423
00:23:00 654
00:00:00 5246
00:01:00 5246
...
00:23:00 231
00:00:00 15
00:01:00 2213
00:02:00 213
00:03:00 3215
...
00:22:00 1354
00:23:00 321
00:00:00 892
00:01:00 1008
00:02:00 1125
...

O resultado seria:
A B C D
00:22:00 423
00:23:00 654
00:00:00 5246
00:01:00 5246
...
00:23:00 231
00:00:00 15
00:01:00 2213
00:02:00 213
00:03:00 3215
...
00:22:00 1354
00:23:00 321
00:00:00 892
00:01:00 1008
00:02:00 1125
...

O objectivo é entao ficar na coluna C os dados do primeiro dia, na coluna D os dados do segundo dia, na coluna E os dados do 3 dia e assim consecutivamente

o código que desenvolvi até ao momento é:

Private Sub CommandButton2_Click()
Dim index() As Variant
Dim NumRows As Integer
Dim j As Integer

NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count
MsgBox (NumRows)

j = 1
index(j) = 1
j = j + 1

For i = 1 To NumRows
If (Cells(i, 1).Value = "00:00:00") Then

index(1, j) = i
Cells(i, 5).Value = index(1, j)

j = j + 1

End If
Next

'MsgBox (index(1, j))

End Sub

 
Postado : 15/12/2014 5:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pelo descrito acima, pelo menos para mim, fica dificil entender o que deseja/espera.
Para evitar que quem se dispuser a auxilia-lo tenha que construir/montar um exemplo, que poderá não ser exatamente o que tem/espera,
poste uma planilha/exemplo que demonstre a estrutura da mesma tipo de dados nas celulas etc.., e mostre como é e como deseja que fique. Assim poderá obter respostas mais rápidas e efetivas.

 
Postado : 15/12/2014 6:23 am
(@danuca9)
Posts: 0
New Member
Topic starter
 

Peço desculpa. Vou colar uma imagem daquilo que pretendo:

Obrigado pela resposta.
Daniel Duarte

 
Postado : 15/12/2014 7:03 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Depende de como vc formatou os dados.

Esse código funciona:

Sub distribuir_GT()

Dim UL  As Long 'Última Linha
Dim i   As Long 'contador linhas
Dim j   As Long 'contador colunas

UL = Cells(Rows.Count, 1).End(xlUp).Row
j = 2

For i = 2 To UL
    If Cells(i, 1).Value2 < Cells(i - 1, 1).Value2 Then
        j = j + 1
    End If
    If j > 2 Then
        Cells(i, j).Value2 = Cells(i, 2).Value2
        Cells(i, 2).ClearContents
    End If
Next i

End Sub

Esse também:

Sub distribuir_GT()

Dim UL  As Long 'Última Linha
Dim i   As Long 'contador linhas
Dim j   As Long 'contador colunas

UL = Cells(Rows.Count, 1).End(xlUp).Row
j = 2

For i = 2 To UL
    If Cells(i, 1).Value2 = TimeValue("00:00:00") Then
        j = j + 1
    End If
    If j > 2 Then
        Cells(i, j).Value2 = Cells(i, 2).Value2
        Cells(i, 2).ClearContents
    End If
Next i

End Sub

Esse também:

Sub distribuir_GT()

Dim UL  As Long 'Última Linha
Dim i   As Long 'contador linhas
Dim j   As Long 'contador colunas

UL = Cells(Rows.Count, 1).End(xlUp).Row
j = 2

For i = 2 To UL
    If Int(Cells(i, 1).Value2) > Int(Cells(i - 1, 1).Value2) Then
        j = j + 1
    End If
    If j > 2 Then
        Cells(i, j).Value2 = Cells(i, 2).Value2
        Cells(i, 2).ClearContents
    End If
Next i

End Sub

Mas, como falei, vai depender de como vc formatou os dados (e do teu uso).

 
Postado : 15/12/2014 7:46 am
(@danuca9)
Posts: 0
New Member
Topic starter
 

Os Dados estão como 'Geral'. Muito obrigado pela ajuda. Vou tentar com seus códigos.

 
Postado : 15/12/2014 11:43 am