2016-06-28 3 views
0

2つのExcelワークブックがあります。 1つのブックの列には、2番目のワークブック内の列の対応する名前と一致する必要がある名前が含まれています。別のワークシートの1つのワークシートから同様のセルの内容を識別する

個々の検索を行わずにすべてのレコードに対してこれを自動的に行うにはどうすればよいですか?

+0

何を試しましたか?もっと情報がありますか?インデックス/マッチのように見えます。 – Kyle

答えて

0

質問にはあまり情報はありません。しかし、以下の前提条件によると、以下のコードは画像に示されているような結果を与えます。

仮定:、私はあなたがデータ行が賢明すなわちマッチROW1-ROW1、ROW2-ROW2と一致することを想定しています名前を対応する質問試合で述べたように

1.、等々。
比較する2つのファイルはそれぞれ、Sheet3Sheet2のデータを持つfile1file2です。
3.最終結果はレッド色に
緑と非一致した名前に一致する名前を強調している(必要に応じてファイル名とシート名を変更します)。 (何も所望の出力Iも「一致」と別のオプションとしてfile2で「いいえマッチ」を表示していますについての質問に指定されていないとして)

Sub Compare() 
    Dim ws1 As Worksheet, ws2 As Worksheet 
    Dim lastRow As Long, matchCount As Long 

    'two sheets to be used of different files 
    Set ws1 = Workbooks("file1").Sheets("Sheet3") 
    Set ws2 = Workbooks("file2").Sheets("Sheet2") 

    matchCount = 0 

    'get last row with data from file1   
    lastRow = ws1.Cells(Rows.Count, "A").End(xlUp).Row 

    'loop through all the names in column A 
    'starting with 2 to exclude header 
    For i = 2 To lastRow 
     If ws1.Range("A" & i) = ws2.Range("A" & i) Then 
      'if names match change cell color to green in file2 
      'also write match in column B 
      ws2.Range("A" & i).Interior.ColorIndex = 43 
      ws2.Range("A" & i).Offset(0, 1).Value = "Match" 
      matchCount = matchCount + 1 
     Else 
      'if names does not match change cell color to red in file2 
      'also write no match in column B 
      ws2.Range("A" & i).Interior.ColorIndex = 3 
      ws2.Range("A" & i).Offset(0, 1).Value = "No Match" 
     End If 
    Next 

    MsgBox "Out of " & lastRow - 1 & " there were " & matchCount & " cells matching." 
End Sub 

注:両方のファイルが同じインスタンスで開いているはずですこのコードが動作するためのExcelの

enter image description here

関連する問題