2016-09-26 11 views
0

データの2つのタブに固有の識別子があります。識別子は特定の順序ではありません。私はvlookup/index/matchが必要で、タブ2に存在しないすべての識別子を表示する必要があります。Excel - 順序の一致しないデータを見つける

理由:使用しているシステムがデータ転送に失敗したところで働いています。私はそこにどのようなデータが現在システム上のどのデータと比較されているかを確認する必要があります。不足しているデータは、私は新しいシステムに追加する必要があります。

例;タブ3では

Tab1 Column A: 
123456, 
654321, 
789456, 
456789. 

Tab2 Column B: 
654321, 
123456, 
456789. 

、私は789456したがって、私は両方に置くことができない、あなたは上記の例で見ることができるように、一意の識別子は、任意の順序で可能性がタブ2. に存在しないことを私に教えて優れてほしいです列を並べて2との一致を尋ねる - 私はそれが全体の列を見て必要があります。

私はAがB列

の順に一致する列を想定して見てきたすべてのチュートリアルは、私が通過する為に、7万行を持っています。

ご協力いただければ幸いです。

ありがとうございます。

答えて

0

式を使用するには、[最初のタブ]にヘルパー列が必要です。空の列で

、Iは、2行目以下を入れ、列Bを使用した:

=IF(ISERROR(VLOOKUP(A2,Sheet2!B:B,1,FALSE)),MAX($B$1:B1)+1,"") 

これはシート2には見出されないもので増分の数の列を作成します。あなたは、単に非空白にし、あなたのリストを取得する何のために新しい列でフィルタリングすることができます。この時点で

enter image description here

あなたは3番目のタブに式でそれをしたい場合は、最初のタブ上のヘルパー列を指し、この式を使用します。

=IFERROR(INDEX(Sheet1!A:A,MATCH(ROW(1:1),Sheet1!B:B,0)),"") 

は次に/ブランクを取得するのに十分な下にドラッグコピーします。

enter image description here

は、70,000品目で、私はそれがダウンして計算が遅くなりますよう配列数式を避けるだろうとさえExcelをクラッシュすることがあります。

0

あなたはこのようなものを使用して試みることができる:

=IFERROR(VLOOKUP(<value cell>, 'Tab2'!B:B, 1, FALSE), FALSE)<>FALSE 

は、タブ3列Bのタブ3列Aにタブ1列Aからすべての値をコピーして、そこにある場合、すべての行では、上記の式を貼り付けます列Aの値を、列Aのセルと値のセルと同じ行を参照して使用します。数式は、タブ2のタブ1から値を検索しようとします。欠落していると、IFERROR関数によってキャッチされたエラーが生成され、エラーエスケープの代わりにFALSEが戻されます。最後に、FALSEは、値がタブ2にある場合はTRUEを返し、タブ2に値がない場合はFALSEを戻すように否定されます。唯一のあなたにこのため、両方のタブ1とタブ2

0

Soulutionに存在している値が表示されます、あなたがTRUE値とそれらの行を参照してくださいだけに、タブ3の列フィルタを使用することができます。この時点から

、式は次のようになりCOUNTIF()ある:

=COUNTIF(Sheet1!A:A,Sheet2!A1) 

すべての行のためにそれを適用した後、単にこのマクロはSheet3コンパクトリストを生成する値0

0

を有するものフィルタ:

Sub WhatsMissing() 
    Dim s1 As Worksheet, s2 As Worksheet, s3 As Worksheet 
    Dim r1 As Range, N As Long, K As Long, i As Long 
    Dim v As Variant 

    Set s1 = Sheets("Sheet1") 
    Set s2 = Sheets("Sheet2") 
    Set s3 = Sheets("Sheet3") 
    Set r2 = s2.Range("B:B") 

    K = 1 
    N = s1.Cells(Rows.Count, "A").End(xlUp).Row 
    With Application.WorksheetFunction 
     For i = 1 To N 
      v = s1.Cells(i, "A").Value 
      If .CountIf(r2, v) = 0 Then 
       s3.Cells(K, "A").Value = v 
       K = K + 1 
      End If 
     Next i 
    End With 
End Sub 
関連する問題