Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Arthur Solly

Excel VBA, soma até determinado valor

Recommended Posts

Postado (editado)

Gostaria de desenvolver uma fórmula onde em uma determinada coluna eu somo seus valores até um valor definido, chegando nesse valor abre se uma linha com o valor total e os itens acima que deram esse valor. Feito isso essa conta se repete por toda a coluna até que ela seja finalizada.

Sub DIVIDIR()

Dim C As Variant

Dim I, AUX, AUX1, AUX2, AUX3 As Long

Dim v1, v2, v3, v4, v5 As Currency

AUX = 0

I = 0

If Planilha3.Range("H2").Value > 0 Then

For Each C In Planilha3.Range("D2:D" & Planilha3.Range("D65536").End(xlUp).Row)

v1 = v1 + C.Value

If v1 > Planilha3.Range("H2").Value Then

AUX = v1 - Planilha3.Range("H2").Value

I = C.Row + 1

v1 = Planilha3.Range("H2").Value

v2 = AUX

Exit For

End If

Next C

[d65000].End(xlUp).Offset(1, 0).Value = v1
[d65000].End(xlUp).Offset(0, -1).Value = "DIA 1"

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

For Each C In Planilha3.Range("D" & I & ":D" & Planilha3.Range("D65536").End(xlUp).Row)

v2 = v2 + C.Value

If v2 > Planilha3.Range("H2").Value Then

AUX = v2 - Planilha3.Range("H2").Value

I = C.Row + 1

v2 = Planilha3.Range("H2").Value

v3 = AUX1

Exit For

End If

Next C

[d65000].End(xlUp).Offset(1, 0).Value = v2
[d65000].End(xlUp).Offset(0, -1).Value = "DIA 2"

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

For Each C In Planilha3.Range("D" & I & ":D" & Planilha3.Range("D65536").End(xlUp).Row)

v3 = v3 + C.Value

If v3 > Planilha3.Range("H2").Value Then

AUX = v3 - Planilha3.Range("H2").Value

I = C.Row + 1

v3 = Planilha3.Range("H2").Value

v4 = AUX2

Exit For

End If

Next C

[d65000].End(xlUp).Offset(1, 0).Value = v3
[d65000].End(xlUp).Offset(0, -1).Value = "DIA 3"

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

For Each C In Planilha3.Range("D" & I & ":D" & Planilha3.Range("D65536").End(xlUp).Row)

v4 = v4 + C.Value

If v4 > Planilha3.Range("H2").Value Then

AUX = v4 - Planilha3.Range("H2").Value

I = C.Row + 1

v4 = Planilha3.Range("H2").Value

v5 = AUX3

Exit For

End If

Next C

[d65000].End(xlUp).Offset(1, 0).Value = v4
[d65000].End(xlUp).Offset(0, -1).Value = "DIA 4"

End If

End If

End If

End If

End Sub

 

Cheguei até aqui.

Editado por DiF
Botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde! Consegui fazer essa mesma tarefa com menos linhas. O código conta da linha 1 a linha n, enquanto forem diferente de vazio.

Segue o código:

Sub CONTAR()

Dim CONT As Double
Dim limite As Double


Range("A1").Select
CONT = 0
limite = 100

Do While ActiveCell <> ""

    Do While CONT < limite
    If ActiveCell.Value = "" Then
    ActiveCell.Value = CONT
    ActiveCell.Interior.Color = vbRed
    End
    
    Else
    CONT = CONT + ActiveCell.Value
    ActiveCell.Offset(1, 0).Activate
    End If
    
    Loop
       
    CONT = CONT - ActiveCell.Offset(-1, 0).Value
    ActiveCell.Offset(-1, 0).Activate
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    ActiveCell.Value = CONT
    ActiveCell.Interior.Color = vbRed
    ActiveCell.Offset(1, 0).Activate
    CONT = 0
    
Loop
 
End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi bem.

 

você tem uma lista e nesta lista você vai somando os valores ate atingir/ultrapassar o valor estipulado e neste posto insere uma linha e coloca este total.

 

O que acontece depois é que nao entendi,

O codigo continua ate a ultima linha repetindo o processo ou para ali?

Se posstar um exemplo da sua planilha e do resultado esperado fica bem fácil obter ajuda.

Spoiler

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×