画像を添付しますのでご覧ください。
1.前月と今月の表があり、それぞれにおおよそ200列、200行ほどのデータがあります
2.前月と今月を比較した時に、先月と違った箇所に今月の表に色が(薄い水色)着いて、欲しい
よろしくお願いします。
コメントの運用を想定して、二つのファイルを選択して実行する例です。
ファイル名が提示のルールに沿っていれば、新しいほうのファイルに比較結果を
表示します。
実際のデータのあるフォルダと比較範囲をコードの先頭に記載してください。
新規ファイルを作成し、
EXCEL で ALT+F11 で表示されるウィンドウで、挿入⇒標準モジュールで
表示されたウィンドウに下記を張り付け閉じます。
EXCEL で ALT + F8 で データ比較 を実行するとファイル選択画面が開くので、ファイルを二つ選択してください(Ctlを押しながらファイルをクリック)
個人用マクロブックにコードを置けば、
新規ブックを作成しなくとも処理を実行することが出来ます。
http://allabout.co.jp/gm/gc/297809/
Option Explicit '//---------------------------------------------- '// ★環境に合わせて設定★ '//---------------------------------------------- Const データフォルダ = "D:\Data\" Const 比較範囲 = "A3:GQ200" '//---------------------------------------------- Sub データ比較() '//---------------------------------------------- '// ファイル選択 Dim ファイルダイアログ As Office.FileDialog Set ファイルダイアログ = Application.FileDialog(msoFileDialogFilePicker) With ファイルダイアログ Do While .Filters.Count > 0 .Filters.Delete Loop .InitialFileName = データフォルダ .Filters.Add "選択ファイル", "*.xls;*.xlsx;*.xlsm" .FilterIndex = 1 .AllowMultiSelect = True End With If ファイルダイアログ.Show() = 0 Then Exit Sub '// ファイルが選択されなかった If ファイルダイアログ.SelectedItems.Count <> 2 Then MsgBox "ファイルを二つ選択してください" Exit Sub End If Dim ファイル名1 As String Dim ファイル名2 As String ファイル名1 = Dir(ファイルダイアログ.SelectedItems(1)) ファイル名2 = Dir(ファイルダイアログ.SelectedItems(2)) '// ファイル名が YYYY_MM だったら日付の新しい方を比較元に設定 Dim 比較元インデックス As Long Dim 比較先インデックス As Long If CLng(Replace(Left(ファイル名1, 7), "_", "")) > CLng(Replace(Left(ファイル名2, 7), "_", "")) Then 比較元インデックス = 1 比較先インデックス = 2 Else 比較元インデックス = 2 比較先インデックス = 1 End If '// ファイルを開いていなかったら開く(2重起動の排除) Dim 比較元ファイル As Workbook On Error Resume Next Set 比較元ファイル = Workbooks(Dir(ファイルダイアログ.SelectedItems(比較元インデックス))) On Error GoTo 0 If 比較元ファイル Is Nothing Then Set 比較元ファイル = Workbooks.Open(ファイルダイアログ.SelectedItems(比較元インデックス)) End If Dim 比較先ファイル As Workbook On Error Resume Next Set 比較先ファイル = Workbooks(Dir(ファイルダイアログ.SelectedItems(比較先インデックス))) On Error GoTo 0 If 比較先ファイル Is Nothing Then Set 比較先ファイル = Workbooks.Open(ファイルダイアログ.SelectedItems(比較先インデックス)) End If '// 各ファイルの先頭シートを比較 Dim 比較元シート As Worksheet Set 比較元シート = 比較元ファイル.Worksheets(1) Dim 比較先シート As Worksheet Set 比較先シート = 比較先ファイル.Worksheets(1) '// 比較処理 Dim 比較セル As Range For Each 比較セル In 比較元シート.Range(比較範囲) If 比較セル.Value <> 比較先シート.Range(比較セル.AddressLocal) Then 比較セル.Interior.ColorIndex = 37 Else 比較セル.Interior.ColorIndex = xlNone End If Next 比較元ファイル.Activate 比較元シート.Activate End Sub
2012_06ファイルのsheetAと2012_07ファイルsheetAがあり、
この2つを比較させ、変更箇所を2012_07ファイルsheetAのセルの色が変わる
ようにしたいです。
1.当然、ファイル名は毎月変わります。2012_08、2012_09・・・2013_01
2.毎月、前月と当月のファイルの差を確認します
3.もしファイルごとが難しければ、2012_07sheetBに2012_06aheetAの内容を
貼り付けてマッチング作業でも構いません
4.上のを試しましたが、どの構文をファイル名またはシート名に変更すれば
いいか分かりませんでした
二つのファイルを開いた状態で実行するのであれば、
For の前は
Dim 比較元 As Worksheet
Set 比較元 = Workbooks("2012_07.xls").Worksheets(1)
Dim 比較先 As Worksheet
Set 比較先 = Workbooks("2012_06.xls").Worksheets(1)
でよいと思います。
ファイル名が提示の名前で、常に今月と先月のファイルの比較というのであれば、
コード化できると思いますが、明日までお待ちください。
試してみましたが「型が違います」というエラーが表示され実行できませんでした
メッセージでポイントを送ります
どの行でエラーが出たのでしょうか。