Ir ao conteúdo

Excel, Somar uma coluna até um determinado número!


cpleandro

Posts recomendados

Postado

Olá,

Gostaria de somar um intervalo no excel, até que a somatória do mesmo chegue a um determinado valor x e me indique a somatoria restante do intervalo.

Ex.

A1:A5, respectivamente: 10,20,10,20,20

Digamos que eu queira somar ate a quantidade 36... ele teria que parar a somatoria na celula A3 armazenar em uma variavel (nao sei como fazer isso também) e depois me retornar o restante do intervalo que nesse caso seria 44(4+20+20).

Por favor, se alguem puder ajudar eu ficaria muito grato!

Leandro

Postado

Digite na célula o valor 36 ou o número desejado.

As 2 somas serão inseridas nas células B1 e B2.

Sub TESTE()

Dim C As Variant

Dim I, AUX As Long

AUX = 0

I = 0

If Plan1.Range("C1").Value > 0 Then

Plan1.Range("B1:B2").ClearContents

For Each C In Plan1.Range("A1:A" & Plan1.Range("A65536").End(xlUp).Row)

Plan1.Range("B1").Value = Plan1.Range("B1").Value + C.Value

If Plan1.Range("B1").Value > Plan1.Range("C1").Value Then

AUX = Plan1.Range("B1").Value - Plan1.Range("C1").Value

I = C.Row + 1

Plan1.Range("B1").Value = Plan1.Range("C1").Value

Plan1.Range("B2").Value = AUX

Exit For

End If

Next C

If I > 0 And I <= Plan1.Range("A65536").End(xlUp).Row Then

For Each C In Plan1.Range("A" & I & ":A" & _

Plan1.Range("A65536").End(xlUp).Row)

Plan1.Range("B2").Value = Plan1.Range("B2").Value + C.Value

Next C

End If

End If

End Sub

Postado

Caro Paulo, esse código que você me passou eu coloco onde?

Desculpe, entendi perfeitamente o código, porém não sei onde colocá-lo no excel!

Agradeço sua atenção!

Leandro P. Carvalho

Digite na célula o valor 36 ou o número desejado.

As 2 somas serão inseridas nas células B1 e B2.

Sub TESTE()

Dim C As Variant

Dim I, AUX As Long

AUX = 0

I = 0

If Plan1.Range("C1").Value > 0 Then

Plan1.Range("B1:B2").ClearContents

For Each C In Plan1.Range("A1:A" & Plan1.Range("A65536").End(xlUp).Row)

Plan1.Range("B1").Value = Plan1.Range("B1").Value + C.Value

If Plan1.Range("B1").Value > Plan1.Range("C1").Value Then

AUX = Plan1.Range("B1").Value - Plan1.Range("C1").Value

I = C.Row + 1

Plan1.Range("B1").Value = Plan1.Range("C1").Value

Plan1.Range("B2").Value = AUX

Exit For

End If

Next C

If I > 0 And I <= Plan1.Range("A65536").End(xlUp).Row Then

For Each C In Plan1.Range("A" & I & ":A" & _

Plan1.Range("A65536").End(xlUp).Row)

Plan1.Range("B2").Value = Plan1.Range("B2").Value + C.Value

Next C

End If

End If

End Sub

Postado

Caro Paulo,

Muito obrigado, funcionou certinho!

Agora, acho que vou trabalhar um pouco em cima do código que você me passou pra atender outras necessidades aqui do meu problema... mas acho que consigo caminhar sozinho com sua ajuda agora!

É que ele tem esse "stop", como exemplo citei o num 36, mais vezes.

Na verdade meu problema é o seguinte:

Num intervalo, será digitado dias do mês trabalhados. Digamos que seria o registro de por exemplo 10 anos de uma pessoa que trabalhou mês a mês e que num mês ela trabalhou 20 dias, outro 18, descontar férias e etc.

Tenho que pegar esse intervalo, descobrir em qual mês ela completa um biênio. E assim que ela complete o biênio, recomece a contagem de um novo biênio e assim por diante, em 10 anos ela teria os 5 biênios....

Mais ou menos seria isso... e com a sua ajuda já dá pra eu começar a trabalhar legal em cima disso!

Valeu pela força e se algum dia eu puder ajudar de alguma forma, pode contar comigo!

Obrigado,

Leandro

Abra o VBA (ALT+F11)

Clique em Inserir/Módulo

Na caixa que abrir cole o código

Para acioná-lo, clique em Ferramentas/Macro/Macros e escolha a macro

  • mês depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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