Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4043 / 13644 ツリー ←次へ | 前へ→

【58718】2つのシートをあるセルの範囲で比較したい 坊主頭のプログラマ 08/11/5(水) 20:55 質問[未読]
【58720】Re:2つのシートをあるセルの範囲で比較し... n 08/11/5(水) 21:21 発言[未読]
【58723】Re:2つのシートをあるセルの範囲で比較し... 坊主頭のプログラマ 08/11/5(水) 22:12 質問[未読]
【58726】Re:2つのシートをあるセルの範囲で比較し... n 08/11/5(水) 22:35 発言[未読]

【58718】2つのシートをあるセルの範囲で比較した...
質問  坊主頭のプログラマ  - 08/11/5(水) 20:55 -

引用なし
パスワード
   例えば、
Worksheets("A")のRange(A1:D5)の範囲とWorksheets("B")のRange(C1:F5)の範囲のセル同士を比較したいのです。
各セルの比較仕様は、Worksheets("A").Cells(A1)とWorksheets("B").Cells(C1)を
比較し、Worksheets("A").Cells(A2)とWorksheets("B").Cells(C2)という組み合わせで比較したいのです。
シート名とセルの範囲はInputBoxで取り込んで、各セルを比較させる簡単なコーディング方法はあるでしょうか?

【58720】Re:2つのシートをあるセルの範囲で比較...
発言  n  - 08/11/5(水) 21:21 -

引用なし
パスワード
   比較範囲がそれほど大きくなければ

Sub try()
  Dim r1 As Range
  Dim r2 As Range
  Dim x

  With Application
    On Error Resume Next
    Set r1 = .InputBox("比較1の全範囲を指定", Type:=8)
    If r1 Is Nothing Then Exit Sub
    Set r2 = .InputBox("比較2の起点セルを指定", Type:=8)
    On Error GoTo 0
    If Not r2 Is Nothing Then
      Set r2 = r2.Resize(r1.Rows.Count, r1.Columns.Count)
      x = .Evaluate("AND(" & r1.Address(external:=True) _
              & "=" & r2.Address(external:=True) & ")")
      MsgBox CStr(x)
    End If
  End With
  Set r1 = Nothing
  Set r2 = Nothing
End Sub

【58723】Re:2つのシートをあるセルの範囲で比較...
質問  坊主頭のプログラマ  - 08/11/5(水) 22:12 -

引用なし
パスワード
   有難うございました。やってみましたが、比較出来ました。もう一つ質問なのですが、アンマッチのセルの箇所を知る事は出来ますか?アンマッチのセルを網掛けしたいのです。申し訳ありませんが、よろしく御願いします。

【58726】Re:2つのシートをあるセルの範囲で比較...
発言  n  - 08/11/5(水) 22:35 -

引用なし
パスワード
   一例としては
x = .Evaluate(r1.Address(external:=True) & "<>" & r2.Address(external:=True))
などのように結果をTRUE/FALSEの配列に取り、r1の範囲と一緒にLoopさせて処理すれば良いです。

もっとも、『アンマッチのセルを網掛けしたい』のが目的なら、
最初からr1とr2の範囲をLoopさせて比較すれば良いと思います。

4043 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free