Excelで毎月、入力作業をするときに、今月の値が先月と大きく乖離している場合にセルの色を変えて警告する方法を考えます。
例として「A列に先月の値がセットされ、B列に今月の値をセットする」という状況であるとします。
A | B | |
---|---|---|
1 | 先月 | 今月 |
2 | 350 | 400 |
3 | 600 | 650 |
4 | 700 | 650 |
5 | 800 | 650 |
今月の値が先月の値と比べ、差が100を超える場合、警告の意味で、セルの色を変えます。
条件付き書式を使う方法
条件付き書式を使います。Excel2007を使いました。
- 書式設定したいセルB2を選択する。
- ホーム-スタイル-条件付き書式-新しいルール を選択。
- 指定の値を含むセルだけを書式設定 を選択。
- ルールの内容 を次の通りセット。
- セルの値
- 次の値の間以外
- =A2-100
- =A2+100
- 書式ボタンをクリックし書式を適当にセット。
- OKボタンをクリック。
- ホーム-スタイル-条件付き書式-ルールの管理 を選択。
- 適用先 を選択。
- 条件付き書式を使いたい範囲をワークシート上で指定して、OKをクリック。
マクロを使う方法
数値を入力する度に内容をチェックし、差が大きい場合には該当するセルの色を変える方法を考えます。
まず数値をチェックし書式をセットするマクロを書きます。
row1,row2の辺りはデータの大きさや位置によって変えられます。
Sub 数値チェック()
Const row1 = 2 '最初の行
Const row2 = 5 '最後の行
Const colbefore = 1 '比較前の列
Const colafter = 2 '比較後の列
Const dif = 100 '異常値と判断する差の大きさ
Dim r As Long
For r = row1 To row2
If Abs(Cells(r, colbefore) - Cells(r, colafter)) > dif Then
With Cells(r, colafter).Interior
.Color = RGB(255, 255, 0)
.Pattern = xlSolid
End With
Else
Cells(r, colafter).Interior.Pattern = xlNone
End If
Next r
End Sub
Const row1 = 2 '最初の行
Const row2 = 5 '最後の行
Const colbefore = 1 '比較前の列
Const colafter = 2 '比較後の列
Const dif = 100 '異常値と判断する差の大きさ
Dim r As Long
For r = row1 To row2
If Abs(Cells(r, colbefore) - Cells(r, colafter)) > dif Then
With Cells(r, colafter).Interior
.Color = RGB(255, 255, 0)
.Pattern = xlSolid
End With
Else
Cells(r, colafter).Interior.Pattern = xlNone
End If
Next r
End Sub
入力作業が終わったときにこのマクロを実行すればチェックできます。
しかしチェックも自動にしたいところです。
そこで、ワークシートのどこかが変更されると上のマクロが実行させるようなマクロを書きます。
- VisualBasicエディタを開く。
- プロジェクトエクスプローラの該当するファイル(プロジェクト)のシートをダブルクリック。
- コードの上部左側のオブジェクトボックスから「Wordsheet」を選択。
- 右側のプロシージャボックスから「Change」を選択。ここに次の通り記述。
Private Sub Worksheet_Change(ByVal Target As Range)
Call 数値チェック
End Sub
Call 数値チェック
End Sub
マクロを使う場合には、セルの色を変えるだけでなく、注意メッセージを出したり、ビープ音を鳴らしたり、色々、応用ができます。
コメント