| 
    
     |  | 回答が付きませんね〜。 比較の対象がセルの値のみでいいと言うことであれば、
 次のような考えではどうですか?
 第3のシートに、二つのシートの値を比較する数式を書いて、
 その結果で判断するとかです。
 
 比較した結果をどんな形でアウトプットするのか不明ですが、
 以下のサンプルでは、異なる値のセルの背景色を黄色に色付けします。
 
 Sub セル同士の比較()
 Dim wb1 As Workbook, wb2 As Workbook
 Dim ws1 As Worksheet, ws2 As Worksheet
 Dim tmpSht As Worksheet, tmpR As Range
 Dim r As Range
 Dim cnt As Long, v() As String, x As Variant
 
 Set wb1 = Workbooks("book1.xls")
 Set wb2 = Workbooks("book2.xls")
 Set tmpSht = ThisWorkbook.Worksheets.Add
 For Each ws1 In wb1.Worksheets
 On Error Resume Next
 Set ws2 = wb2.Worksheets(ws1.Name)
 On Error GoTo 0
 If Not ws2 Is Nothing Then
 With ws1
 '      Set tmpR = Intersect(.UsedRange, .Range(ws2.UsedRange.Address))
 Set tmpR = .Range(.UsedRange, .Range(ws2.UsedRange.Address))
 End With
 '    If tmpR Is Nothing Then Exit Sub
 With tmpSht
 .Cells.ClearContents
 With .Range(tmpR.Address)
 .FormulaR1C1 = "=IF('[" & ws1.Parent.Name & "]" & ws1.Name & "'!RC=" _
 & "'[" & ws2.Parent.Name & "]" & ws2.Name & "'!RC,"""",1)"
 cnt = Application.WorksheetFunction.Count(.Cells)
 If cnt > 0 Then
 v = Split("")
 For Each r In .SpecialCells(xlCellTypeFormulas, xlNumbers).Areas
 ReDim Preserve v(UBound(v) + 1)
 v(UBound(v)) = r.Address(0, 0)
 Next
 End If
 End With
 End With
 If cnt > 0 Then
 On Error Resume Next
 For Each x In v
 ws1.Range(x).Interior.Color = vbYellow
 ws2.Range(x).Interior.Color = vbYellow
 Next
 On Error GoTo 0
 End If
 Debug.Print ws1.Name, IIf(cnt > 0, cnt & " 個の相違セルがあります。", "相違セルはなし")
 Set ws2 = Nothing
 End If
 Next
 Application.DisplayAlerts = False
 tmpSht.Delete
 Application.DisplayAlerts = True
 End Sub
 
 
 |  |