Ir para conteúdo
Fórum Script Brasil

Armando Nogueira

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Armando Nogueira

  • Data de Nascimento 01/07/1988

Perfil

  • Gender
    Male

Armando Nogueira's Achievements

0

Reputação

  1. :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]
×
×
  • Criar Novo...