Ir ao conteúdo

Excel For no VBA e soma de valores


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

Boa tarde,

 

Preciso desenvolver um For com essas especificações:

 

Ler da linha 150 para cima (For invertido)

Percorrer linhas da coluna "F"

Se encontrado a palavra "resultado" verificar as linhas acima até encontrar a palavra "pare" criando assim um intervalo.

Na célula onde for encontrada a palavra "resultado" fazer a soma de todos os valores numéricos do intervalo ("resultado" até "pare")

Se após a palavra pare (na linha acima, pois o for é de baixo para cima) for encontrada uma célula em branco, fazer novamente a operação anterior ( _

Tentar encontrar a palavra "resultado" e criar um intervalo até encontrar palavra "pare"), para dar continuidade da operação.

 

Tentei de algumas formas, porém não consegui, sou novo no VBA e ainda estou me aprofundando nesse mundo, se puderem me dar uma mãozinha 
para criar essa função serei eternamente grato!!!

Screenshot_1.jpg

Postado

@Neodenn O código pode testar apenas se o texto é Pare ou Resultado para pegar o intervalo que será somado. Veja se assim resolve. Coloquei para começar da linha 20 e mostrar um Msgbox com o total para testar o resultado. Se for isso mesmo é só mudar inicial da linha.

 

Sub Macro()
    Dim Linha   As Long
    Dim Total   As Currency
    Dim Somar   As Boolean
    
    For Linha = 20 To 1 Step -1
        Dim Valor As Variant
        
        Valor = Cells(Linha, [F:F].Column)
        
        If UCase(Valor) = "RESULTADO" Then
            Somar = True
        ElseIf UCase(Valor) = "PARE" Then
            Somar = False
            MsgBox Total
            Total = 0
        End If
            
        If Somar = True And IsNumeric(Valor) Then
            Total = Total + Valor
        End If
    Next Linha
End Sub

 

Outra forma que talvez funcione seria apenas zerar a variável da soma quando o texto Pare for encontrado. Aí não teria necessidade da variável Boolean.

  • Amei 1
Postado

@Midori Obrigado pela disposição!

Deu certo sim, obrigado. Só me restou 1 duvida. Como substituir os valores onde está escrito "RESULTADO" pelo valor da soma e na ordem correta?

 

Pra ajudar nos testes, vou criar uma tabela teste com um botao e a macro ok?

 

Desde já, muito obrigado pela força, ja ajudou muito!

 

Teste.rar

  • Solução
Postado

@Neodenn Veja se assim resolve,

 

Sub SomaResultado()
    Dim Celula      As Range
    Dim Resultado   As Range
    
    Set Celula = [F100]
    
    While Celula.Row > 1
        If UCase(Celula) = "RESULTADO" Then
            Set Resultado = Celula
        ElseIf UCase(Celula) = "PARE" Then
            If Not Resultado Is Nothing Then
                Resultado = WorksheetFunction _
                    .Sum(Range(Celula, Resultado))
            End If
            Set Resultado = Nothing
        End If
        
        Set Celula = Celula.Offset(-1)
    Wend
End Sub

 

  • Amei 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!