• ベストアンサー

エクセルのブック間のセル比較

エクセルのブック間で同一セルの値の有無のみを比較したいのですが、 どのようにしたらよいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

骨組みは下記の様な感じでいかが。マクロは、セルにマーキングする、BookB(ご質問ではBook2になっていますが)の方に記述してください。趣旨が理解できているかどうか自信が無いので、If shA.Name = shB.Name Thenの中味は、必要によりご自分で修正してください。致命的なバグ対応は致しますが、解説はいたしかねます。 Sub test() Dim shA As Worksheet, shB As Worksheet Dim myCellB As Range '名前の同じシートを比較する For Each shB In ThisWorkbook.Worksheets For Each shA In Workbooks("BookA.xls").Worksheets If shA.Name = shB.Name Then '手抜きでUsedRangeになっているが、範囲を明確に区切れれば、それと置き換えるべき 'shB.range("A1:X100") 等 For Each myCellB In shB.UsedRange If shA.Range(myCellB.Address).Value = "" Then If myCellB.Value <> "" Then myCellB.Interior.ColorIndex = 4 Else If myCellB.Value = shA.Range(myCellB.Address) Then myCellB.Interior.ColorIndex = 3 End If Next myCellB End If Next shA Next shB End Sub

Naish26
質問者

お礼

丁寧なご回答ありがとうございます。 試してみます。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答1では勘違いをしていました。Sheet間の比較を述べてしまいました。 A2セルやA3セルにはブックの名前例えば住所録.xlsなどと正確に入力します。B2セルやB3セルにはシート名を、C1セルには検査のセル番地を入力します。 C2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(INDIRECT("'["&A2&"]"&B2&"'!"&C$1)=0,"データ無","データ有"))

Naish26
質問者

お礼

早速のご回答ありがとうございました。 私の質問の記述が不十分でした。 やりたいことは以下になります。 Book1とBook2があり、フォーマットは同じですが、 値はそれぞれ異なります。 Book1に値が記入されているセルに対しては、Book2の同じセルには別の 値を記入しなければなりません。逆に、Book1に値が入っていないセルには、Book2にも値は入っていてはいけません。 この条件で、比較した結果をBook2にセルの色で表現したいと思います。 間単に使えるようなツールはないでしょうか? 参考情報等教えていただけると助かります。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えばSheet2からSheet5におけるA1セルにおける値の有無を調べるのでした次のようにしてはどうでしょう。 Sheet1のA2セルにSheet2,A3セルにSheet3、A4セルにSheet4,A5セルにSheet5と入力します。 B1セルには調べたいセル番地のA1と入力します。 B2セルには次の式を入力し下方にオートフィルドラッグします。 =IF(OR(A2="",B$1=""),"",IF(INDIRECT(A2&"!"&B$1)=0,"データ無","データ有")) これで各シートでのA1セルでのデータの有無が一気に表示されます。

関連するQ&A