人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excel2003またはAccess2003で以下のことをやりたいです。

画像を添付しますのでご覧ください。

1.前月と今月の表があり、それぞれにおおよそ200列、200行ほどのデータがあります
2.前月と今月を比較した時に、先月と違った箇所に今月の表に色が(薄い水色)着いて、欲しい

よろしくお願いします。

1342596716
●拡大する


●質問者: namaewa_5
●カテゴリ:コンピュータ 科学・統計資料
○ 状態 :キャンセル
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook

コメントの運用を想定して、二つのファイルを選択して実行する例です。

ファイル名が提示のルールに沿っていれば、新しいほうのファイルに比較結果を
表示します。

実際のデータのあるフォルダと比較範囲をコードの先頭に記載してください。

新規ファイルを作成し、

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

2 ● prius-phv

条件付き書式で、相対する表の値が異なる時にセル色を付けたら解決と思います。

6月分の表には行番号がありますが、7月分の表には行番号が付されていませんので、勝手にこちらで行番号をつけて説明します。

仮に、「7月」と記されたセルを A998 とします。
山田太郎さんの職員番号「0001」は A1001 になるわけです。

一方で、1行目に記載されている数字は、文字列ではなく数値であると仮定します。

値を比較した際に、異なる値の場合に TRUE 、
同じ場合には FALSE を返す数式を考えます。

山田太郎さんの班長 D1001 の比較は、
=VLOOKUP($A1001,$A$5:$PQ$200,$D$1,FALSE)<>D1001
となります。
両表共に「A」なので、FALSE を返します。

鈴木三郎さんの班長 D1003 の比較は、
=VLOOKUP($A1003,$A$5:$PQ$200,$D$1,FALSE)<>D1003
ですので、
6月表では「F」、7月表「L」ですから、TRUE を返します。

条件付き書式については、
http://www.ne.jp/asahi/juku/excel/Jouken2432.htm
をご覧ください。
操作手順の画像満載ですので、本回答とあわせるとわかりやすいと思います。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ