Ir para conteúdo
Fórum Script Brasil
  • 0

ajudona com vba


Armando Nogueira

Pergunta

:blink:

Olá,

galera sou novo neste forum, porém estou com uma divida, tendo em vista que não trabalho com vba, mas fui designado para

fazer um sistema nele.

Assim,

suponhamos que tenho 1.000 valores em uma coluna do excel, porém tenho que localizar por exemplo 3.283,93 reais,

mas como esses valores são quebrados, tem que haver uma somatória de valores para chegar a um valor aproximado ou igual ao que estou procurando....

na mesma "folha", tem um campo onde o usuário colocar o valor a ser procurado, um campo para colocar o valor de tolerância mínima e máxima....

Assim até a combinação de 2 a 2 estou conseguindo fazer sem problemas, mas com uma combinação de 3 a 3, 4 a 4 .... já não estou conseguindo....

se alguém puder dar um help ai eu agradeço.

segue o codigo:



A minha ideia é ler a qntidade total de celulas com valores sendo que o valor total com certeza vai variar, uma semana pode ser somente 5 numeros, mas na próxima pode ser 1000, então lei o a qntidade total, depois pego a ultima posição valida e venho lendo de baixo para cima, mas vale lembrar que os valores estarão ordenados do menor para o maior.


Sub Busca_valor()

' Variaveis que eu utilizarei

linha = 5
Numero = Worksheets("Plan1").Cells(linha, 5).Value
Tolerancia = Worksheets("Plan1").Cells(linha, 7).Value
combinacoes = 5
Max_permitido = Numero + Tolerancia
Min_permitido = Numero - Tolerancia

' Um Loop para pegar o total de linhas com valores.
Do While Worksheets("Plan1").Cells(linha, 3).Value <> ""
maior_posicao = linha
linha = linha + 1
ultima_linha = linha - 1 ' " me retorna-me " a ultima linha, com valor.
ultima_posicaoComvalor = ultima_linha
coluna = ultima_posicaoComvalor
Loop


' Limpa a coluna 4, esta coluna recebe o "X", ou seja, estou "limpando" para uma Nova Busca.
Do While Worksheets("Plan1").Cells(coluna, 3).Value
Worksheets("Plan1").Cells(coluna, 4) = ""
coluna = (coluna - 1)
If coluna = 4 Then
Exit Do
End If
Loop ' fim loop que limpa a coluna 4.

' estou localizando o "pointer", para as linhas.
posicao_setada = ultima_posicaoComvalor
posicao_anterior = posicao_setada - 1
posicao_ini = posicao_anterior

Do While posicao_setada <> 4 <= esta é a ultima posicao com valor, ela vai ficar setada até
que a posicao anterior seja igual à. 4

If posicao_anterior = 4 Then
posicao_anterior = ultima_posicaoComvalor
End If

Do While posicao_anterior <> 4

If posicao_anterior = 4 Then ' se a posicao anterior for igual a 4, então deve sair do loop de dentro.
Exit Do
End If

somatoria_temp = Worksheets("Plan1").Cells(posicao_setada, 3).Value +
Worksheets("Plan1").Cells(posicao_anterior, 3).Value

' só vai marcar se a somatoria_temp for menor que o valor permitido.
If somatoria_temp <= Max_permitido Then

Worksheets("Plan1").Cells(posicao_anterior, 4) = "X"
Worksheets("Plan1").Cells(posicao_setada, 4) = "X"

If somatoria_temp >= Min_permitido Then

Worksheets("Plan1").Cells(posicao_anterior, 4) = "X"
Worksheets("Plan1").Cells(posicao_setada, 4) = "X"

sairDoLoop = "sim"
End If

End If

' Zero a variavel somatoria_temp_Loop para poder pegar os valores das "novas" posições.
somatoria_temp_Loop = somatoria_temp_Loop - Worksheets("Plan1").Cells(posicao_anterior, 3).Value
somatoria_temp_Loop = somatoria_temp_Loop - Worksheets("Plan1").Cells(posicao_setada, 3).Value

posicao_anterior = posicao_anterior - 1

Loop

posicao_setada = posicao_setada - 1
Loop

[/codebox]

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...