Compartilhar via

Buscar linha a linha da Plan1 para plan2

Anônima
2023-07-03T15:44:08+00:00

Olá a todos gostaria de uma ajuda para fazer uma "ANALISE DE SOMA"

criar um botão "BUSCAR" no vba excel que funciona da seguinte forma como mostrar figura abaixo.

PASSO 1 = ao clicar no botão "BUSCAR" na plan2, buscar - se  primeira combinação VOL1 na linha 3 na plan1 destacada "VERDE" e preenche os campos n1,n2,n3 da plan2. também na lin3 da plan2.

passo2 = aplicando um WHILE para pecorrer a lista e IF/ELSE sera usado dentro while vai compara a "SOMA PESQUISAR", o valor digitado que é "3". com a "SOMA STATUS" que possui formula de "soma(g10:g19) se for igual 3 a 3, sair do LOOP,  isso acontece porque no momento do preechimento dos campo da busca a soma estatus já vai acontece.

passo 3 = caso "CONTRARIO",  se soma a pesquisar, que o valor digitado  é "3", for "DIFERENTE", Soma Status "2" , repete o loop passar para proxima combinação 125, assim sucessivamente ate final da lista.


codigo vai encontra o seguinte resultado 123 e 345.

Private Sub btBuscar_Click()

Dim ws1 As Worksheet 

Dim ws2 As Worksheet 

Dim lin\_Total As Long 

Dim soma\_Pesq As Integer 

Dim soma\_status As Integer 

' Defina as planilhas de trabalho 

Set ws1 = ThisWorkbook.Sheets("Dados") 

Set ws2 = ThisWorkbook.Sheets("Processo") 

' seleciona a posição planilha dados 

ws1.Select 

ws1.Range("a2").Select 

'Soma digitada a pesquisar 

soma\_Pesq = Planilha2.Cells(4, 4).Value 

'Total de linhas da combinação planilha dados 

ws2.Select 

lin\_Total = Planilha2.Cells(5, 6).Value 

For i = 2 To lin\_Total 

  ' Limpe os campos de preenchimento 

  ws2.Select 

  ws2.Range("A2:D2").ClearContents 

    'Preencher os campos processo planilha2 

    Planilha2.Cells(2, 1).Value = Planilha1.Cells(i, 1).Value 

    Planilha2.Cells(2, 2).Value = Planilha1.Cells(i, 2).Value 

    Planilha2.Cells(2, 3).Value = Planilha1.Cells(i, 3).Value 

    Planilha2.Cells(2, 4).Value = Planilha1.Cells(i, 4).Value 

    'Soma obtida após preenchimento dos campos n1,n2,n2 do processo 

    soma\_status = Planilha2.Cells(5, 4).Value 

    'Compara se valores pesquidados são iguas 

    If soma\_Pesq = soma\_status Then 

        MsgBox ("Valor Encontrado são iguias") 

        Exit For 

    End If 

Next 

MsgBox ("Fim da lista Dados") 

End Sub

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

3 respostas

Classificar por: Mais útil
  1. Anônima
    2023-07-05T22:50:36+00:00

    Agradeço a colaboração mais já resolvir código.

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2023-07-03T20:10:38+00:00

    Olá

    Bem vinda à Comunidade Microsoft 365 e Office

    Tudo bem, JCSILVA_527*? Seguem os passos:*

    1. Aperta Alt + F11 para abrir o editor do VBA.

    2. insere o seguinte código na Planilha2 (onde você deseja que o botão esteja localizado):

    Private Sub CommandButton1_Click() <br>Dim ws1 As Worksheet <br>Dim ws2 As Worksheet <br>Dim ws3 As Worksheet <br>Dim cel As Range <br>Dim busca As String <br>Dim somaProcurada As Integer <br>Dim estatusPts As Range <br> <br>' Defina as planilhas de trabalho <br>Set ws1 = ThisWorkbook.Sheets("Plan1") <br>Set ws2 = ThisWorkbook.Sheets("Plan2") <br>Set ws3 = ThisWorkbook.Sheets("Plan3") <br> <br>' Limpe os campos de preenchimento <br>ws2.Range("N1:N3").ClearContents <br> <br>' Defina o valor a ser buscado <br>busca = "VOL 1" <br> <br>' Procure por "VOL 1" na linha 3 na Plan1 <br>Set cel = ws1.Rows(3).Find(What:=busca, LookIn:=xlValues, LookAt:=xlWhole) <br> <br>If Not cel Is Nothing Then <br>' Se "VOL 1" for encontrado, destaque a célula em verde <br>cel.Interior.Color = RGB(0, 255, 0) <br> <br>' Preencha os campos N1, N2, N3 na Plan2 com os valores encontrados na linha 3 da Plan1 <br>ws2.Range("N1") = cel.Value <br>ws2.Range("N2") = cel.Offset(0, 1).Value <br>ws2.Range("N3") = cel.Offset(0, 2).Value <br> <br>' Defina a soma procurada <br>somaProcurada = 3 <br> <br>' Defina a célula com o "estatus pts" (soma) na linha 3 da Plan2 <br>Set estatusPts = ws2.Rows(3).Find(What:="estatus pts", LookIn:=xlValues, LookAt:=xlWhole) <br> <br>Do While True <br>' Calcule a soma dos valores preenchidos <br>Dim soma As Integer <br>soma = Application.WorksheetFunction.Sum(ws2.Range("N1:N3")) <br> <br>If soma = somaProcurada Then <br>' Se a soma for igual à soma procurada, saia do loop <br>Exit Do <br>ElseIf soma > somaProcurada Then <br>' Se a soma for maior que a soma procurada, não há necessidade de continuar <br>Exit Do <br>End If <br> <br>' Passe para a próxima combinação <br>cel = cel.Offset(1, 0) <br> <br>If cel Is Nothing Then <br>' Se não houver mais combinações, informe o fim da lista na Plan1 <br>ws1.Range("A1") = "Fim da lista" <br>Exit Sub <br>End If <br> <br>' Preencha os campos N1, N2, N3 na Plan2 com os novos valores encontrados <br>ws2.Range("N1") = cel.Value <br>ws2.Range("N2") = cel.Offset(0, 1).Value <br>ws2.Range("N3") = cel.Offset(0, 2).Value <br>Loop <br> <br>' Aplicar filtro e remover os encontrados na Plan2 <br>ws2 <br> ---

    Olá Dio Xavier, talvez a minha explicação não ficou clara fiz algumas alterações no texto para melhor me compreende.

    desde já agradeço a sua atenção.

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Dio Xavier 285.6K Pontos de reputação Moderador Voluntário
    2023-07-03T17:55:12+00:00

    Olá

    Bem vinda à Comunidade Microsoft 365 e Office

    Tudo bem, JCSILVA_527*? Seguem os passos:*

    1. Aperta Alt + F11 para abrir o editor do VBA.

    2. insere o seguinte código na Planilha2 (onde você deseja que o botão esteja localizado):

    Private Sub CommandButton1_Click() <br> Dim ws1 As Worksheet <br> Dim ws2 As Worksheet <br> Dim ws3 As Worksheet <br> Dim cel As Range <br> Dim busca As String <br> Dim somaProcurada As Integer <br> Dim estatusPts As Range <br> <br> ' Defina as planilhas de trabalho <br> Set ws1 = ThisWorkbook.Sheets("Plan1") <br> Set ws2 = ThisWorkbook.Sheets("Plan2") <br> Set ws3 = ThisWorkbook.Sheets("Plan3") <br> <br> ' Limpe os campos de preenchimento <br> ws2.Range("N1:N3").ClearContents <br> <br> ' Defina o valor a ser buscado <br> busca = "VOL 1" <br> <br> ' Procure por "VOL 1" na linha 3 na Plan1 <br> Set cel = ws1.Rows(3).Find(What:=busca, LookIn:=xlValues, LookAt:=xlWhole) <br> <br> If Not cel Is Nothing Then <br> ' Se "VOL 1" for encontrado, destaque a célula em verde <br> cel.Interior.Color = RGB(0, 255, 0) <br> <br> ' Preencha os campos N1, N2, N3 na Plan2 com os valores encontrados na linha 3 da Plan1 <br> ws2.Range("N1") = cel.Value <br> ws2.Range("N2") = cel.Offset(0, 1).Value <br> ws2.Range("N3") = cel.Offset(0, 2).Value <br> <br> ' Defina a soma procurada <br> somaProcurada = 3 <br> <br> ' Defina a célula com o "estatus pts" (soma) na linha 3 da Plan2 <br> Set estatusPts = ws2.Rows(3).Find(What:="estatus pts", LookIn:=xlValues, LookAt:=xlWhole) <br> <br> Do While True <br> ' Calcule a soma dos valores preenchidos <br> Dim soma As Integer <br> soma = Application.WorksheetFunction.Sum(ws2.Range("N1:N3")) <br> <br> If soma = somaProcurada Then <br> ' Se a soma for igual à soma procurada, saia do loop <br> Exit Do <br> ElseIf soma > somaProcurada Then <br> ' Se a soma for maior que a soma procurada, não há necessidade de continuar <br> Exit Do <br> End If <br> <br> ' Passe para a próxima combinação <br> cel = cel.Offset(1, 0) <br> <br> If cel Is Nothing Then <br> ' Se não houver mais combinações, informe o fim da lista na Plan1 <br> ws1.Range("A1") = "Fim da lista" <br> Exit Sub <br> End If <br> <br> ' Preencha os campos N1, N2, N3 na Plan2 com os novos valores encontrados <br> ws2.Range("N1") = cel.Value <br> ws2.Range("N2") = cel.Offset(0, 1).Value <br> ws2.Range("N3") = cel.Offset(0, 2).Value <br> Loop <br> <br> ' Aplicar filtro e remover os encontrados na Plan2 <br> ws2 <br> ---

    Esta resposta foi útil?

    0 comentários Sem comentários