2つのExcelワークブックがあります。 1つのブックの列には、2番目のワークブック内の列の対応する名前と一致する必要がある名前が含まれています。別のワークシートの1つのワークシートから同様のセルの内容を識別する
個々の検索を行わずにすべてのレコードに対してこれを自動的に行うにはどうすればよいですか?
2つのExcelワークブックがあります。 1つのブックの列には、2番目のワークブック内の列の対応する名前と一致する必要がある名前が含まれています。別のワークシートの1つのワークシートから同様のセルの内容を識別する
個々の検索を行わずにすべてのレコードに対してこれを自動的に行うにはどうすればよいですか?
質問にはあまり情報はありません。しかし、以下の前提条件によると、以下のコードは画像に示されているような結果を与えます。
仮定:、私はあなたがデータ行が賢明すなわちマッチROW1-ROW1、ROW2-ROW2と一致することを想定しています名前を対応する質問試合で述べたように
1.、等々。
比較する2つのファイルはそれぞれ、Sheet3
とSheet2
のデータを持つfile1
とfile2
です。
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の
何を試しましたか?もっと情報がありますか?インデックス/マッチのように見えます。 – Kyle