2017-07-01 1 views
0

J'ai besoin de comparer deux colonnes dans différentes feuilles de calcul.Comparer deux colonnes à partir de deux feuilles différentes

première feuille (500 lignes)

ColumnA (NUMBER) ColumnB (STRING) ColumnC (NUMBER) ColumnD (NUMBER) Columne (NUMBER) ColumnF (NUMBER)

seconde feuille

COLUMNA (NUMBER) ColumnB (STRING) ColumnC (NUMBER) ColumnD (NUMÉRO) Columne (NUMBER) avec des ColumnF

Je veux imprimer en Feuil3 le SITESID (COLUMNA) de la deuxième sh eet qui n'existe pas dans la première feuille.

Option Explicit 
Sub Compare() 

Dim Row1Crnt As Long 
Dim Row2Crnt As Long 
Dim Row3Crnt As Long  
Dim Row1Last As Long 
Dim Row2Last As Long  

Dim ValueSheet1 
Dim ValueSheet2 
Dim duplicate As Boolean  
Dim maxColmn As Long 
Dim i 
maxColmn = 10 ' number of column to compare 
For i = 1 To maxColmn 

With Sheets("Sheet1") 
    Row1Last = .Cells(Rows.Count, i).End(xlUp).Row 
End With 

With Sheets("Sheet2") 
    Row2Last = .Cells(Rows.Count, i).End(xlUp).Row 
End With 

Row1Crnt = 2 
Row2Crnt = 2 
Row3Crnt = 2  
maxColmn = 10 

Do While Row2Crnt <= Row2Last 

duplicate = False 
Row1Crnt = 2 

With Sheets("Sheet2") 
ValueSheet2 = .Cells(Row2Crnt, i).Value 
End With 
Do While Row1Crnt <= Row1Last 

With Sheets("Sheet1") 
ValueSheet1 = .Cells(Row1Crnt, i).Value 
End With 

If ValueSheet1 = ValueSheet2 Then 
    duplicate = True 
Exit Do 

End If 
Row1Crnt = Row1Crnt + 1 
Loop 

If duplicate = False Then 
With Sheets("Sheet3") 
    .Cells(Row3Crnt, i).Value = ValueSheet2 
    Row3Crnt = Row3Crnt + 1 
    End With 

End If 

Row2Crnt = Row2Crnt + 1 
Loop 
Next 

End Sub 

Mais je vais prendre qu'en conséquence tous COLUMNA (SITESID) sheet2 et ColumnB (NOMS) de la deuxième feuille qui n'existent pas dans la première feuille

+0

Bienvenue, mais prenez le [Tour] (https://stackoverflow.com/tour) et lisez les wikis tag que vous ne connaissez pas. – pnuts

+0

@Gowthan S'il vous plaît [voir] (https://stackoverflow.com/tags/macros/info) :) – pnuts

Répondre

0

Le plus rapide « vérifier exist 'est application.match.

sub compare 
    dim a as long, arr as variant, chk as variant 

    with worksheets("sheet1") 
     arr = .range(.cells(2, "A"), .cells(.rows.count, "A").end(xlup)).value2 
    end with 

    with worksheets("sheet3") 
     for a = lbound(arr, 1) to ubound(arr, 1) 
      if iserror(application.match(arr(a, 1), worksheets("sheet2").columns("A"), 0)) then 
       .cells(.rows.count, "A").end(xlup).offset(1, 0) = arr(a, 1) 
      end if 
     next a 
    end with 
end sub 
+0

merci pour votre réponse, Cela ne fonctionne pas de moi, peut-être que je dois changer le premier code. Ce que je veux faire est de comparer la feuille1 et la feuille2 basées sur la colonne A, et dans la feuille3 pour me montrer les données qui sont dans la deuxième diapositive et n'existent pas dans la première. Le premier code me retourne toute la colonne de la feuille2 et de la colonne B (noms) existe dans la feuille2 et non dans la première sans inclure les autres colonnes et sans trier. Pouvez-vous aider? –