2016-05-11 1 views
0

同じシートの2つのテーブルを比較したいと思います。私は最初のテーブルを選択し、最初の入力としてボタンをクリックします。同様に私は次の表の入力を行います。 「比較」ボタンをクリックすると、結果が2番目の表のセルを強調表示して表示されます。これを手伝ってください。Excel VBA - 同じシート内の2つのテーブルを比較する必要があります。入力テーブルはマウスを使用して選択されます

以下はスクリプトです。2つの表を2つのシートで比較するために使用します。

Private Sub CompareBtn_Click() 
Dim first_index As Integer 
Dim last_index As Integer 
Dim sheet1 As Worksheet 
Dim sheet2 As Worksheet 
Dim r1 As Integer 
Dim r2 As Integer 
Dim found As Boolean 
Dim rng As Range 

    Set sheet1 = Worksheets("Source") 
    Set sheet2 = Worksheets("Minus") 


    first_index = 1 
    last_index = sheet2.UsedRange.Rows.Count 



    For r2 = first_index To last_index 
     found = False 

     For r1 = first_index To last_index 
      If sheet1.Cells(r1, 1) = sheet2.Cells(r2, 1) _ 
       And _ 
       sheet1.Cells(r1, 2) = sheet2.Cells(r2, 2) _ 
      Then 

       found = True 
       Exit For 
      End If 
     Next r1 


     If Not found Then 

      sheet2.Cells(r2, 1).Interior.ColorIndex = 35 
      sheet2.Cells(r2, 2).Interior.ColorIndex = 35 
     End If 
    Next r2 
End Sub 
+0

。あなたは何を試しましたか? – CallumDA

+1

@ CallumDA33-私が使用したコードを追加しました – BenThomas

+0

なぜ条件付き書式を使用しないのですか? –

答えて

1

は、次のコードを試してみてください選択オプションを使用して入力を与えることを見つけるために私を助けてください:

Sub CompareTable() 

    Dim oldTable As Range, newTable As Range, i As Integer, J As Integer, m As Integer, n As Integer 

    On Error Resume Next 

    Set oldTable = Application.InputBox(Prompt:="Please Select Raw Data", Title:="Range Select", Type:=8) 
    Set newTable = Application.InputBox(Prompt:="Please Select Processed Data", Title:="Range Select", Type:=8) 

    i = oldTable.Rows.Count 
    J = oldTable.Columns.Count 

    For m = 1 To i 
     For n = 1 To J 
      If oldTable.Cells(m, n) <> newTable.Cells(m, n) Then 
       newTable.Cells(m, n).Interior.ColorIndex = 6 
      End If 
     Next n 
    Next m 

End Sub 

これは二つの範囲をお願いします。比較したい2つのテーブルを選択し、2つ目のテーブルでその違いを強調表示します。

EDIT_________________________________________________________________________________

それともあなたがあなたのコードを更新することができます。これは、スクリプトの書き込みサービスではありません

Sub CompareBtn_Click() 
    Dim first_index As Integer 
    Dim last_index As Integer 
    Dim rows_index As Integer, columns_index As Integer 
    Dim sheet1 As Worksheet 
    Dim sheet2 As Worksheet 
    Dim r1 As Integer 
    Dim r2 As Integer 
    Dim found As Boolean 
    Dim rng As Range 

    Set sheet1 = Worksheets("Source") 
    Set sheet2 = Worksheets("Minus") 

    rows_index = sheet2.UsedRange.Rows.Count 
    columns_index = sheet2.UsedRange.Columns.Count 

    For r2 = 1 To rows_index 
     For r1 = 1 To columns_index 
      If sheet1.Cells(r2, r1) <> sheet2.Cells(r2, r1) Then 
       sheet2.Cells(r2, r1).Interior.ColorIndex = 35 
      End If 
     Next r1 
    Next r2 
    sheet2.Select 
End Sub 
+0

ありがとうございます。私はマクロの初心者です。あなたはたくさん助けてくれました。 – BenThomas

+0

@BenThomas - 私が手伝ってくれてうれしいです。 – Mrig

関連する問題