0
マクロを使用して2つのExcelスプレッドシートを比較する方法があるかどうかは疑問でした。私は基本的に作業を行いますが、列ごとにチェックするマクロを持っています。つまり、A(1,1)
に定義された値がsheet1
であり、同じ値がA(1,1)
のsheet2
に存在しない場合、その列の任意の行に存在する値は不平をつかないでしょう。2を比較マクロを使用してファイルをExcel
'compare Sheet
Sub CompareTable()
Dim tem, tem1 As String
Dim text1, text2 As String
Dim i As Integer, hang1 As Long, hang2 As Long, lie As Long, maxhang As Long, maxlie As Long
Sheets("Sheet1").Select
Columns("A:A").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("A1").Select
Sheets("Sheet2").Select
Dim lastRow As Long
With ActiveSheet
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
Rows("1:" & lastRow).Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("A1").Select
maxhang = lastRow ' number of the last row containg data
MaxRow = lastRow
Dim LastCol As Integer
With ActiveSheet
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
MaxColumn = LastCol
For col = 1 To MaxColumn
For hang1 = 2 To maxhang
Dim a As Integer
a = 0
tem = Sheets(1).Cells(hang1, col)
For hang2 = 1 To maxhang
tem1 = Sheets(2).Cells(hang2, col)
If tem1 = tem Then
a = 1
Sheets(2).Cells(hang2, col).Interior.ColorIndex = 6
For lie = 1 To maxlie
text1 = Sheets(1).Cells(hang1, lie)
text2 = Sheets(2).Cells(hang2, lie)
If text1 <> text2 Then
Sheets(2).Cells(hang2, lie).Interior.ColorIndex = 8
End If
Next
End If
Next
If a = 0 Then
Sheets(1).Cells(hang1, 1).Interior.ColorIndex = 5
End If
Next
Next
End Sub
注:私は私の行のマッチを与える可能性のある解決策を探していますので、任意の行の任意の値をSheet2のと一致していない場合、それはそれを強調表示する必要があります。
私は他の選択肢も持っています。どんな助けや提案も大歓迎です。
ありがとうございました!
を
を参照してください。 、1) 'がRow1に見つからない場合、コードは' A1 - > Cell(1,1) 'をハイライトします;' B1 - > Cell(2,1) 'がRow2で見つかった場合、それを強調表示します。私の理解は正しいのですか? – Siva
他に、1対1のマッピングをお探しですか? 'Sheet1-A1' - >' Sheet2-A1'、 'Sheet1-A2' - >' Sheet2-A2'、... 'Sheet1-B1' - >' Sheet2-B1' .. – Siva
のように基本的に私の要求は何ですか、私は 'sheet1'の1行目と' sheet2'の1行目のように行全体をマッチさせる必要があります。私は両方のファイルを行ごとに比較したいです。しかし、私の現在のコードがしていることは、 'sheet1'の各値を' sheet2'の列でチェックすることです。問題は 'A(1,2)'が 'sheet1'に値' A'を持ち、 'A(1,2、 5) 'が'シート2 'に 'A'を持っていれば強調表示されません。 – Joe