Notifications
Clear all

Macro Para Comparar Colunas Numéricas

8 Posts
4 Usuários
0 Reactions
1,555 Visualizações
(@miguel-70)
Posts: 207
Estimable Member
Topic starter
 

Ola boa tarde,
Será possível uma macro que faça uma comparação entre duas colunas numéricas (colunas A / G). Que ao rodar a macro emiti uma msgbox quais números estão faltando na coluna G.
Col A ---Col G
1 ------------1
2-------------2
3-------------5
4-------------7
5-------------
6-------------8
7-------------
8-------------
9-------------
10------------10

Então a macro faz uma comparação entre as coluna e emitisse uma mensagem quais os números estão faltando na coluna G.
A coluna A vai acrescentando diariamente ate a 3.000
Obrigado!

 
Postado : 23/05/2015 12:55 pm
(@davi23)
Posts: 21
Eminent Member
 

Bom dia.

Tentei ser mais simples e sucinto possível:
Considerei que os valores estão na coluna G, ou seja, dei um offset de 6.

Sub Verificar()

Range("A1").Select
Do While ActiveCell.Offset(0, 6) <> ""
ActiveCell.Offset(1, 0).Select

Loop

MsgBox "Campo vazio", vbDefaultButton1
End Sub

Espero ter ajudado.

 
Postado : 24/05/2015 7:38 am
(@miguel-70)
Posts: 207
Estimable Member
Topic starter
 

Amigo obrigado pela ajuda,
Não é o panejado, más não deixa de ser uma ideia nova. Para adaptar eu preciso de mudar muita coisa em meu projeto, mas agradeço pela dica.
Obrigado!

 
Postado : 24/05/2015 7:57 am
(@edcronos)
Posts: 1006
Noble Member
 

o certo seria postar uma plan de exemplo pq eu não sei se entendi direito já que os numeros da coluna g são diferentes da coluna A

mas de inicio seria assim

sub listafalta()

li=2'linha inicial 

for L=li to Cells(Rows.Count,"A").End(xlUp).Row 'conta até a ultima linha da coluna A

if cells(l,"g").value2="" then ' Se G estiver vazio então acrescenta o valor da coluna A ana lista

falta=falta & cells(l,"A").value2 &  vbCrLf 
next

msgbox falta

end sub

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 24/05/2015 12:22 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Baseando na rotina do link abaixo :
VBA to compare values in two columns, and copy the row of missing values to a new worksheet
http://stackoverflow.com/questions/2392 ... es-to-a-ne

Fazendo uns ajustes temos a seguinte rotina, e como citou uma qde de 3.000 linhas não acho conveniente relacionar todos em um MsgBox, então deixei desabilitado e é feito uma relação em outra aba.

Sub compareDuasColunas()
    Dim lastRowA As Integer
    Dim lastRowG As Integer
    Dim lastRowM As Integer
    Dim foundTrue As Boolean
    Dim X As Integer
    ' stop screen from updating to speed things up
    Application.ScreenUpdating = False

    lastRowA = Sheets("Plan1").Cells(Sheets("Plan1").Rows.Count, "A").End(xlUp).Row
    lastRowG = Sheets("Plan1").Cells(Sheets("Plan1").Rows.Count, "G").End(xlUp).Row
    lastRowM = Sheets("Plan2").Cells(Sheets("Plan2").Rows.Count, "B").End(xlUp).Row
    X = 1

    For i = 2 To lastRowA
        foundTrue = False
        For j = 2 To lastRowG
        
            If Sheets("Plan1").Cells(i, 1).Value = Sheets("Plan1").Cells(j, 7).Value Then
                foundTrue = True
                Exit For
            End If
        
        Next j
    
        If Not foundTrue Then
            'Mensagem de cada numero faltante
            'MsgBox X & "º" & " Numero faltante" & Sheets("Plan1").Cells(i, 1).Value
            'X = X + 1
            
            'Relaciona na Plan2 os numeros faltantes
            Sheets("Plan1").Cells(i, 1).Copy Destination:=Sheets("Plan2").Cells(lastRowM, 1) 'Rows(lastRowM)
            
            lastRowM = lastRowM + 1
        End If
    
    Next i

' stop screen from updating to speed things up
Application.ScreenUpdating = True

End Sub

Faça os teste e veja se é isto.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/05/2015 1:13 pm
(@miguel-70)
Posts: 207
Estimable Member
Topic starter
 

Genial, muitíssimo obrigado Mauro Coutinho.
Resolvido. :D

 
Postado : 24/05/2015 1:38 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Genial, muitíssimo obrigado Mauro Coutinho.
Resolvido. :D

Apesar de Resolvido, encontrei uma mais simplificada, que joga o resultado na mesma planilha na Coluna "H" :

Compare Columns and find missing data
http://www.mrexcel.com/forum/excel-ques ... -data.html

Sub WriteMissingNames()
    Dim Rw As Long, Rw2 As Long
    Dim iFound As Integer
    
    Rw2 = 2
    For Rw = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        iFound = WorksheetFunction.CountIf(Range("G:G"), Cells(Rw, 1))
        If iFound = 0 Then
            Cells(Rw2, 8).Value = Cells(Rw, 1).Value
            Rw2 = Rw2 + 1
        
        End If
    Next Rw
    
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/05/2015 1:50 pm
(@miguel-70)
Posts: 207
Estimable Member
Topic starter
 

Mais um vez obrigado Mauro Coutinho, simplificou, todos os códigos estão guardado em minha coleção.
:D

 
Postado : 24/05/2015 3:02 pm