Usuário com melhor resposta
Percorrer intervalo de celulas com calculo até atender condição.

Pergunta
-
Bom dia
Gostaria de saber se é possível criar algum código VBA que seria ativado com um botão e percorresse um intervalo de células realizando cálculos em cada passagem até atingir uma condição.
Explico, por exemplo, no intervalo A1 até A10, eu teria uma soma que o total é igual a 100, e o correto deveria ser 70, então quando eu clicar neste botão ele iria percorrer o intervalo e subtrair 1 da célula com o maior valor e faria isso suscessivamente até atingir a condição que é ser igual a 70.
Não entendo muito de VBA e não sei se é possível fazer isso. Alguém tem alguma idéia ?
Grato.
- Editado Glauber_Silva sexta-feira, 16 de setembro de 2011 15:47
Respostas
-
Fiz esse código de acordo com os dados passados na imagem
testa que as vezes pode ajudar vc a fazer o que realmente vc
está precisando...
qlqr duvida estou a disposição
abrç
For i = 1 To 5
maior = 0
total = Cells(7, i).Value
ref = Cells(9, i).Value
j = 1
Do While total <> ref
Do While Cells(j, i).Value <> ""
If Cells(j, i).Value > maior Then
maior = Cells(j, i).Value
linha = j
End If
j = j + 1
Loop
If total > ref Then
Cells(linha, i).Value = Cells(linha, i).Value - 1
ElseIf total < ref Then
Cells(linha, i).Value = Cells(linha, i).Value + 1
End If
total = Cells(7, i).Value
ref = Cells(9, i).Value
j = 1
maior = 0
Loop
Next i
End Sub
- Editado Jhonatan Franklin segunda-feira, 19 de setembro de 2011 22:44 Modificação no Código
- Marcado como Resposta Glauber_Silva terça-feira, 20 de setembro de 2011 13:28
Todas as Respostas
-
Fala, Glauber!!! Bem vindo de volta...
É perfeitamente possível, sim! Há laços no VBA q fazem isso pra gente.
Post um arquivo para que possamos ter um exemplo do q, exatamente, vc quer fazer.
Abs!!!
Obrigado, Everton- Editado almeida.eas sexta-feira, 16 de setembro de 2011 19:29
-
Então,Digamos que eu tenha a seguinte tabelaEu quero criar uma função ou algo do gênero que ao acionada irá comparar o Total de cada coluna com o Total Ref. e se não estiverem iguais ela irá verificar qual o maior número da coluna e subtrair ou somar 1 até que Total esteja igual ao Total Ref.Bom, é isso que estou precisando fazer por hora, na verdade o que eu preciso é mais complicado que isso , mas as demais coisas eu consigo fazer se souber como fazer esse..abs
- Editado Glauber_Silva segunda-feira, 19 de setembro de 2011 14:03
-
Fiz esse código de acordo com os dados passados na imagem
testa que as vezes pode ajudar vc a fazer o que realmente vc
está precisando...
qlqr duvida estou a disposição
abrç
For i = 1 To 5
maior = 0
total = Cells(7, i).Value
ref = Cells(9, i).Value
j = 1
Do While total <> ref
Do While Cells(j, i).Value <> ""
If Cells(j, i).Value > maior Then
maior = Cells(j, i).Value
linha = j
End If
j = j + 1
Loop
If total > ref Then
Cells(linha, i).Value = Cells(linha, i).Value - 1
ElseIf total < ref Then
Cells(linha, i).Value = Cells(linha, i).Value + 1
End If
total = Cells(7, i).Value
ref = Cells(9, i).Value
j = 1
maior = 0
Loop
Next i
End Sub
- Editado Jhonatan Franklin segunda-feira, 19 de setembro de 2011 22:44 Modificação no Código
- Marcado como Resposta Glauber_Silva terça-feira, 20 de setembro de 2011 13:28
-
Olá Jhonatan
Ajudou bastante, eu estava fazendo algo parecido, mas estava ficando bem extenso, do jeito que vc fez, me deu idéias pra encurtar o código, pois além do Total e do Ref que tenho para coluna, também existe para linhas, mas agora eu já sei como irei fazer com as linhas
Obrigado!
abç