Uma família de softwares de planilhas da Microsoft com ferramentas para analisar, criar gráficos e comunicar dados.
Agradeço a colaboração mais já resolvir código.
Não há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
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
Uma família de softwares de planilhas da Microsoft com ferramentas para analisar, criar gráficos e comunicar dados.
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.
Agradeço a colaboração mais já resolvir código.
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.
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> | --- |
|---|