Vídeo recomendado
https://youtu.be/Ju8Esra5--I

Comparar valores entre duas colunas e listar

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
JFranca
Acabou de chegar
Acabou de chegar
Mensagens: 8
Registrado em: Sáb Fev 19, 2011 10:47 pm

Comparar valores entre duas colunas e listar

Mensagem por JFranca »

Boa tarde a todos,

Tenho uma planilha onde preciso comparar os valores que constam na sheet "Conferencia" coluna "B" com a coluna "C".
Quando os valores da coluna "B" for menor que o da coluna "C", quero que os nomes, que constam na coluna "A" sejam transportados para sheet "Observações" e apresente uma MSG com os nomes que estejam nesta condição.

Fiz a rotina abaixo, porém não estou conseguindo listar todos os nomes que B < C para sheet observações. Não consegui entender onde estou errando. Os nomes até aparecem na MSG, mas só esta transportando um nome. Estou anexando planilha para entenderem melhor.
Preciso de ajudar e agradeço antecipadamente a todos.

Sub teste()

'Definir as planilhas
Dim conferencia As Worksheet
Dim observacoes As Worksheet
Set conferencia = ThisWorkbook.Worksheets("Conferencia")
Set observacoes = ThisWorkbook.Worksheets("OBSERVAÇÕES")

'Definir as variáveis
Dim ultimaLinhaConferencia As Long
Dim ultimaLinhaObservacoes As Long
Dim linhaConferencia As Long
Dim linhaObservacoes As Long
Dim nomes As String

'Definir a última linha de cada planilha
ultimaLinhaConferencia = conferencia.Cells(Rows.Count, "A").End(xlUp).Row
ultimaLinhaObservacoes = observacoes.Cells(Rows.Count, "B").End(xlUp).Row

'Verificar o saldo remanescente e listar os assistidos
For linhaConferencia = 17 To ultimaLinhaConferencia
If conferencia.Cells(linhaConferencia, "B") < conferencia.Cells(linhaConferencia, "C") Then
'Adicionar o nome na planilha OBSERVAÇÕES
linhaObservacoes = ultimaLinhaObservacoes + 1
observacoes.Cells(linhaObservacoes, "B") = conferencia.Cells(linhaConferencia, "A")
nomes = nomes & " " & conferencia.Cells(linhaConferencia, "A")
End If
Next linhaConferencia

'Mensagem de resultados
If nomes <> "" Then
MsgBox "Os seguintes nomes possuem valores de BENEFÍCIOS > que o SALDO DE CONTA: " & nomes, vbInformation, "Resultados"
Else
MsgBox "Nada consta.", vbInformation, "Resultados"
End If
End Sub


JFrança
Anexos
Saldo_vs_Beneficio.zip
(16.69 KiB) Baixado 501 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Comparar valores entre duas colunas e listar

Mensagem por Reinaldo »

Experimente:

Código: Selecionar todos

Sub teste()
'Definir as planilhas
Dim conferencia As Worksheet
Dim observacoes As Worksheet
Set conferencia = ThisWorkbook.Worksheets("Conferencia")
Set observacoes = ThisWorkbook.Worksheets("OBSERVAÇÕES")

'Definir as variáveis
Dim ultimaLinhaConferencia As Long
Dim ultimaLinhaObservacoes As Long
Dim linhaConferencia As Long
Dim linhaObservacoes As Long
Dim nomes As String

'Definir a última linha de cada planilha
ultimaLinhaConferencia = conferencia.Cells(Rows.Count, "A").End(xlUp).Row
ultimaLinhaObservacoes = observacoes.Cells(Rows.Count, "B").End(xlUp).Row
linhaObservacoes = ultimaLinhaObservacoes
'Verificar o saldo remanescente e listar os assistidos
For linhaConferencia = 17 To ultimaLinhaConferencia
    If conferencia.Cells(linhaConferencia, "B") < conferencia.Cells(linhaConferencia, "C") Then
        'Adicionar o nome na planilha OBSERVAÇÕES
        linhaObservacoes = linhaObservacoes + 1
        observacoes.Cells(linhaObservacoes, "B") = conferencia.Cells(linhaConferencia, "A")
        If nomes = "" Then
            nomes = conferencia.Cells(linhaConferencia, "A")
        Else
            nomes = nomes & "; " & conferencia.Cells(linhaConferencia, "A")
        End If
    End If
Next linhaConferencia

'Mensagem de resultados
If nomes <> "" Then
    MsgBox "Os seguintes nomes possuem valores de BENEFÍCIOS > que o SALDO DE CONTA: " & nomes, vbInformation, "Resultados"
Else
    MsgBox "Nada consta.", vbInformation, "Resultados"
End If
End Sub


Responder