Criação de uma macr...
 
Notifications
Clear all

Criação de uma macros de contagem

6 Posts
3 Usuários
0 Reactions
925 Visualizações
(@herculis)
Posts: 4
New Member
Topic starter
 

Boa Tarde, recentemente estou trabalhando com simulações, e estou com uma duvida a respeito do seguinte: como faço o uso de muitos dados gostaria de saber a quantidade exata de dados que são adicionados, por exemplo tendo a seguinte coluna
2
2
3
4
2
dai gostaria de sabe um meio pra saber a desenvolver uma macros que determina-se somente aa quantidade a mais adicionada por exemplo se eu adiciona-se
1
12
3
4
5
6
como poderia fazer uma macros pra me informar essa quantidade adicionada a minha coluna?

 
Postado : 14/07/2016 12:46 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Hérculis,

Pelo menos para mim, sua explicação está confusa. Confesso que não entendi nada...

Faça o seguinte: elabore um arquivo exemplo e o anexe, de forma compactada, aqui mesmo no fórum. Aproveite também e explique melhor a sua necessidade.

Mostre no arquivo exemplo, qual seria o resultado esperado por você após a execução a macro.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 14/07/2016 1:05 pm
(@herculis)
Posts: 4
New Member
Topic starter
 

Bem vdd reli agora pouco e esta muito sem nexo.
O seguinte eu fiz uma macros pra importar dados de txt para o excel. Que é o seguinte:

Dim fileToOpen

Sub ImportarArquivo()

'Declara a variável para o nome do arquivo texto
Dim ArqBanco
ArqBanco = ""

'Abre janela para abertura do arquivo texto
fileToOpen = Application _
.GetOpenFilename("Txt Files (*.txt), *.txt", multoselect = True) 'Define o tipo de arquivo permitido
If fileToOpen <> False Then
    'Se o arquivo for válido importa o novo arquivo
    ArqBanco = fileToOpen
End If
'Se nenhum arquivo for selecionado encerra
If fileToOpen = False Then End

'Define variáveis para abertura e leitura do arquivo texto
Dim sArquivo As String, Slinha As String, iARQ As Integer
'Nome do arquivo
sArquivo = ArqBanco
'Libera leitura do arquivo
iARQ = FreeFile
'Abre o arquivo
Open sArquivo For Input As iARQ

'Declara variáveis de linha e coluna para destino dos dados
Dim R, C, linha
linha = Sheets("Plan1").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row
R = linha: C = 2
Cells(R, C).Activate

'Declara colunas dos dados e Delimitador de coluna
Dim sTempo, sExtBottom, sExtWall, sExtTop, sIntBottom, sIntWall, sDelimitador

'Como você solicitou, vamos dar nomes para as colunas. É só alterar os nomes para os de sua preferência
Cells(R, C) = ""
Cells(R, C + 1) = "ExtBottom"
Cells(R, C + 2) = "ExtWall"
Cells(R, C + 3) = "ExtTop"
Cells(R, C + 4) = "IntBottom"
Cells(R, C + 5) = "IntWall"
'Range(Cells(R, C), Cells(R, C + 5)).Font.Bold = True



sDelimitador = "|" 'Nesse caso vamos usar o pipe "|"

'Declara as paradas. Como são 6 colunas, temos só 5 paradas
Dim Parada1, Parada2, Parada3, Parada4, Parada5

'Definimos valor "0" para as paradas, para começar a contagem.
Parada1 = 0: Parada2 = 0: Parada3 = 0: Parada4 = 0: Parada5 = 0
'Inicia o loop no arquivo texto
On Error GoTo Erro
Do While Not EOF(iARQ)
    'Seleciona a célula
    Cells(R, C).Activate
    
    'Pega a linha atual do arquivo texto
    Line Input #iARQ, Slinha
    
    'Vamos definir as paradas "|"
    For i = 1 To Len(Slinha)
        If Parada1 = 0 And Mid(Slinha, i, 1) = sDelimitador Then Parada1 = i
        If i >= Len(Slinha) And Parada1 = 0 And Mid(Slinha, i, 1) <> sDelimitador Then GoTo FimDaLinha
    Next i
    For i = Parada1 + 1 To Len(Slinha)
        If Parada2 = 0 And Mid(Slinha, i, 1) = sDelimitador Then Parada2 = i
        If i >= Len(Slinha) And Parada2 = 0 And Mid(Slinha, i, 1) <> sDelimitador Then GoTo FimDaLinha
    Next i
    For i = Parada2 + 1 To Len(Slinha)
        If Parada3 = 0 And Mid(Slinha, i, 1) = sDelimitador Then Parada3 = i
        If i >= Len(Slinha) And Parada3 = 0 And Mid(Slinha, i, 1) <> sDelimitador Then GoTo FimDaLinha
    Next i
    For i = Parada3 + 1 To Len(Slinha)
        If Parada4 = 0 And Mid(Slinha, i, 1) = sDelimitador Then Parada4 = i
        If i >= Len(Slinha) And Parada4 = 0 And Mid(Slinha, i, 1) <> sDelimitador Then GoTo FimDaLinha
    Next i
    For i = Parada4 + 1 To Len(Slinha)
        If Parada5 = 0 And Mid(Slinha, i, 1) = sDelimitador Then Parada5 = i
        If i >= Len(Slinha) And Parada5 = 0 And Mid(Slinha, i, 1) <> sDelimitador Then GoTo FimDaLinha
    Next i
    
FimDaLinha:
    
    'Carregamos os dados para as constantes
    
    '<< BLOQUEIE AS LINHAS DAS COLUNAS NÃO UTILIZADAS. OU SEJA, SE VOCÊ FOR IMPORTAR UM ARQUIVO COM 10 COLUNAS, MANTENHA
    'APENAS AS 10 LINHAS NECESSÁRIAS.
    'OBSERVE QUE O A LINHA REFERENTE À ÚLTIMA COLUNA É DIFERENTE. MANTENHA ELE DESSE JEITO. >>>
    sTempo = Mid(Slinha, 1, Parada1 - 1)
    sExtBottom = Mid(Slinha, Parada1 + 1, Parada2 - 1 - Parada1)
    sExtWall = Mid(Slinha, Parada2 + 1, Parada3 - 1 - Parada2)
    sExtTop = Mid(Slinha, Parada3 + 1, Parada4 - 1 - Parada3)
    sIntBottom = Mid(Slinha, Parada4 + 1, Parada5 - 1 - Parada4)
    sIntWall = Mid(Slinha, Parada5 + 1, Len(Slinha) - Parada5)
   
   
    
    'Descarrega as constantes para a planilha
    Cells(R, C) = sTempo
    Cells(R, C + 1) = sExtBottom
    Cells(R, C + 2) = sExtWall
    Cells(R, C + 3) = sExtTop
    Cells(R, C + 4) = sIntBottom
    Cells(R, C + 5) = sIntWall
    
    
    
    'Avança uma linha
    R = R + 1
    
    'Limpa constantes
    sTempo = ""
    sExtBottom = ""
    sExtWall = ""
    sExtTop = ""
    sIntBottom = ""
    sIntWall = ""
    Parada1 = 0
    Parada2 = 0
    Parada3 = 0
    Parada4 = 0
    Parada5 = 0
   
    
    DoEvents

Loop
End Sub

Ele está funcionando perfeitamente, ele extra tempo, e mais outras 5 informações. A minha problematica está justamente na coluna de tempo, pois o seguinte o tempo é pra continuar e não começar do 0 novamente, mas os dados que me passaram mostra analises sequenciais e suas durações, porem todas começam do tempo 0, e eu gostaria de adicionar a esse o ultimo valor de tempo antes do zero, exemplo:
Tenho a seguinte Tabela , vendo ela vc nota que em determinado ponto ela volta a 0, e isso não é desejavel, então eu gostaria de somar o 3600 com todos os termos desde o 0 ate o antes do proximo 0, neste ja seria somada o valor anterior a ele. Porem não consegui desenvolver uma macros que permite-se tal ação. Já não sei o que tentar, você poderia me dar uma maozinha?
Tempo analise
0
1.00E-05
2.00E-05
3.00E-05
0.01025
0.02049
3600
0
1.00E-05
2.00E-05
2404.663574
3098.072754
3556.656494
3593.971924
0
1.00E-05
2.00E-05
3.00E-05
5.00E-05
9.00E-05
7200

 
Postado : 14/07/2016 2:21 pm
(@herculis)
Posts: 4
New Member
Topic starter
 

Tipo eu ate tive a seguinte ideia, saber a quantidade de celulas que foram adicionadas dai usar o offset da seguinte maneira =
'Determinando x, so que não sei determinar esse x para que ele conte a quantidade de celulas que foram adicionadas, se eu soube-se disso talvez desse bem certo. Esse x ta meio errado pois não consegui implementa minha ideia, que no caso tem que ser mudar realmente esse x, pra que esse determine a quantidade de linhas adicionadas para que ele seja usado posteriormente no offset

Dim x As Long
 x = R - 2
  
'Modificação do sTempo
'Declaração de variaveis

Dim w             As Worksheet
Dim UltCel        As Range
Dim resultado     As Long
Dim y             As Long

'Iniciação das variaveis

Set w = Sheets("Plan1")
resultado = 0


'Seleciona a planilha

w.Select

'Determina e seleciona a primeira celula preenchida de cima para baixo

Set UltCel = w.Range("B1048576").End(xlUp)
y = w.Range("B1048576").End(xlUp).Offset(-x, 0).Value

UltCel.Select


'Estrutura de repetição
'Façã enquanto a linha for maior igual a linha
linha = Sheets("Plan1").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row

Do While ActiveCell.Row >= linha

   resultado = y + ActiveCell.Value
    
    
   ActiveCell.Value = resultado
    ActiveCell.Offset(-1, 0).Select
       
Loop
 
Postado : 14/07/2016 2:35 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Kd o arquivo que foi solicitado pelo colega?

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 14/07/2016 3:41 pm
(@herculis)
Posts: 4
New Member
Topic starter
 

Desculpa esqueci de mandar o arquivo

 
Postado : 14/07/2016 4:46 pm