Contents
はじめに
EXCELを使っていて、重要なデータのセルを色付けしたけれど、この色付けを別のシートに反映させたいと思ったことはありませんか?私はつい最近、そう思うことがあったのでVBAを用いて解決しました。この記事は、自分の作ったコードを保存するつもりで作成していますが、同じようなコードを書きたい人の役に立てると幸いです。
また、マクロの実装については下の記事を参考にしてください。
コード作成
例えば、4月の東京の晴れた日のデータと東京の最高気温が20℃以上になった日のデータがあったとします。
このデータから9時に晴れであり、最高気温が20.0℃である日が簡単に分かるようにしたい。ということで、右側のセルの色付けを左側に移していきたいと思います。
Sub Color()
Dim i As Long
Dim j As Long
For i = 1 To 20
For j = 1 To 20
If Worksheets("Sheet2").Cells(i, j).Interior.ColorIndex <> xlNone Then
Worksheets("Sheet1").Cells(i, j).Interior.Color = RGB(255, 204, 153)
Else
Worksheets("Sheet1").Cells(i, j).Interior.ColorIndex = xlNone
End If
Next
Next
End Sub
このコードではfor文を二つ使いセルの色を一つ一つ確認し、色がついていた場合に色を付けるという動作を行っています。また、Cells()は参照するセルの位置を示す関数であり、iが増えると下に移動しjが増えると右へ移動します。そのとき、Worksheetという関数を用いて参照するシートを示しています。
Interiorは背景色を参照する関数です。これに対して文字の色を参照する関数はFontです。さらに、ColorIndexは色の情報を取得する関数であり、xlNoneはColorIndexにおいて無色を示します。これ以外にColorでも色を取得することが出来ますが、無色にあたる値が分からなかったので使用していません。
このコードでは、if文とノットイコール[≠]の意味である<>を用いて、セルが無色でないとき別のシートの同じ位置をRGB(255,204,153)の色にするという命令を出しています。
このコードを実際に起動すると、以下のようになり目的通りに動作することが確認できます。
最後に
基本的なコードですが、誰かの役に立てると幸いです。ぜひ他の記事も見ていってください。