Excelの条件付き書式は便利ですよね。条件によってセルに色付けしてデータをわかりやすく参照する時などにとても有効ですね。
ですが、条件設定がわかりにくかったり、メモリを消費して重くなったり、行コピーすると設定がおかしくなったり、いろいろと残念な場面が結構ありませんか?
そんな時、複数の色や複数の条件を簡単に設定管理し、色付けしてデータを解析しやすくなると作業も効率化できると思います。
そこで、別シートに細かく設定した背景色とフォント色、検索キーワードの条件を一覧で設定し、セル単位に簡単に色付けできるマクロを作成してみました。
百聞は一見に如かず、一目瞭然、一発でイメージが湧き、使い方がわかるようなGIFアニメ付きです。
個人用マクロなどにコピーして実行するだけなので、ぜひお試しください。
条件付き書式を使うとルールの管理が大変
条件付き書式を完璧に使いこなしている人はよいですが、管理が面倒と感じている人は条件付き書式を使うことを躊躇してしまいますよね。
主な問題点は以下です。同じように考えている人はいませんか?
行コピーすると条件が壊れる
個人的には、Excelの条件付き書式による一番の致命的な問題は、行コピーすると設定がおかしくなる点にあると思ってます。下記画像のように。
行コピーは誰でも普通に使う操作なので、条件付き書式を敬遠してしまう一つの要因になりますよね。壊れまくってしまった条件をメンテしていこうとは思わないですからね。
セルコピーすると条件付き書式も一緒に引き継がれてしまう
条件付き書式で設定されたセルの状態をそのまま別ブックや別シートに条件付き書式なしで背景色やフォント色をコピーしたい時ってありませんか?
残念ながら、条件付き書式自体が一緒にコピーされてしまいます。裏技があるかもしれせんが、通常の操作ではたぶん不可能です。
条件付き書式は使わなくて済むならば使わない方がよい?
条件付き書式は当然使いこなせればとても便利ですが、個人的にはとても使いづらい機能であることは否めません。
誰かがきっとメンテしてくれるから、条件付き書式はいじらない、壊れても気にしない、という人はよいと思いますが、仕事などで使う大事なデータをきっちり管理し、メンテしていく人にとっては別の手段を考えてみてもよいのかなと思います。
かく言う私は結構バリバリ条件付き書式を使ってますが、使いづらいなぁと感じることは多々あるので、上記問題点を少しでも軽減するために条件付き書式を使わずとも設定条件により柔軟に色付けできる方法を模索してみました。
別シート条件でセル色付けVBAマクロ作成
条件付き書式は通常、行や列などのある程度まとまった範囲で指定して書式を設定することになると思いますが、実際のセルに設定されている値とあらかじめ設定しておいた条件値で判定してセルに色付けできるときっと便利ですよね。
そんなマクロを作成してみました。概要は以下。
別シートに色と条件を設定
別シートに色を設定できると、一目瞭然でどんな条件でどの色を付けるかわかりやすく管理できると思ってます。
文字列・日付・数値の3パターンで判定
対象シートのセルに設定された文字列データ、日付データ(時刻含む)、数値データを判定できる仕様としています。
フォント色と背景色を塗りつぶして色分け
条件付き書式は枠線など、いろいろな書式設定が可能ですが、最も視覚的にデータの解析に有効な色の判断が最も重要ですよね。
別シートに設定したフォント色と背景色で検索にひっかかったセルに色付けする処理としています。
別シート条件でセル色付けVBAマクロの主な仕様
細かい処理はコメントで補足してるので、ザックリとした仕様を箇条書きで記載します。
- アクティブシートのセルを検索し、別シートの条件に一致したセルに色付けする。
- 別シートに設定されたフォント色と背景色を反映する。
- 実行判断の確認メッセージ制御(フラグon/offあり)
- 色判定シートの検索キーワードに「*」を付けて部分一致検索。
- 検索キーワード先頭に比較演算子「=,<>,>=,>,<=,<」を付けて日付・時刻、数値の比較検索。
別シート条件でセル色付けVBAマクロのソースコード
セルの色付けでデータ解析効率を爆上げしたい方は、下記のソースコードを以下↓↓↓のリンクの内容に従って個人用マクロにコピーしてご使用ください。
マクロならば、痒いところに手が届きます。用途によっては目的に沿わない可能性がありますが、Const値を持たせてなるべく汎用的に作成しています。
コピーしやすいように無理やり一つのSub関数にまとめてますが、別関数化してパラメータや変数で使い分けるのが正しいやり方ですね。
自分に合った方法にカスタマイズしてみてください。VBAマクロの勉強にも少しは役立つと思います。
Sub セルを別シートの条件によって色付け1()
'全有効範囲指定
Const 範囲指定区分 = 0 '0:全有効範囲指定
Const 色判定シート名 = "色"
Call セルを別シートの条件によって色付け処理(範囲指定区分, 色判定シート名)
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub セルを別シートの条件によって色付け2()
'選択セルのみ
Const 範囲指定区分 = 1 '1:選択セルのみ
Const 色判定シート名 = "色"
Call セルを別シートの条件によって色付け処理(範囲指定区分, 色判定シート名)
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub セルを別シートの条件によって色付け処理(範囲指定区分 As Integer, 色判定シート名 As String)
''''''''''概要''''''''''
'アクティブシートのセルを検索し、別シートの条件に一致したセルに色付けする。
'別シートに設定されたフォント色と背景色を反映する。
'色判定シートの検索キーワードに「*」を付けて部分一致検索
'検索キーワード先頭に比較演算子「=,<>,>=,>,<=,<」を付けて日付・時刻、数値の比較検索
''''''''''前提''''''''''
'別シート検索キーワード設定セルの表示形式は「文字列」であること
''''''''''定義''''''''''
'''''定数'''''
Const 確認メッセージフラグ = 1 '0:確認メッセージを表示しない、1:確認メッセージを表示する
Const 色設定列 = 1
Const 色設定開始行 = 1
Const 色値判定開始列 = 2
'Const 範囲指定区分 = 0 '0:全有効範囲指定、1:選択セルのみ
'Const 色判定シート名 = "色" '任意設定
'''''変数'''''
Dim メッセージ As String
Dim 実行確認 As Integer
Dim 色判定シート存在チェックフラグ As Integer
Dim 現在シート As Worksheet
Dim 各シート As Worksheet
Dim 対象範囲 As Range
Dim 開始行, 終了行, 開始列, 終了列, 対象行, 対象列 As Long
Dim 色判定シート As Worksheet
Dim 色設定最終行, 色値判定最終列, 色値判定行, 色値判定列 As Long
Dim 検索区分 As Long
Dim 現在セル値, 現在セル書式, 色判定セル値, 色判定セル書式 As Variant
Dim 現在セル値テキスト As String
Dim 現在セル値型 As Integer
Dim 比較演算子 As String
Dim 数値比較値 As Variant
Dim 日付比較値 As Variant
Dim 色判定シート背景色
Dim 色判定シートフォント色
Dim 色変更フラグ As Boolean
Dim 時刻チェック As Variant
''''''''''高速化対応''''''''''
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
''''''''''チェック''''''''''
If Not シート存在チェック(色判定シート名) Then
MsgBox "「" & 色判定シート名 & "」シートが見つかりません。" & vbCrLf & "処理を終了します。"
Exit Sub
End If
Set 色判定シート = Worksheets(色判定シート名)
''''''''''確認処理''''''''''
If 確認メッセージフラグ = 1 Then
If 範囲指定区分 = 0 Then
メッセージ = メッセージ _
& "全データ有効範囲を対象とします。" & vbCrLf
ElseIf 範囲指定区分 = 1 Then
メッセージ = メッセージ _
& "選択セルのみを対象とします。" & vbCrLf
End If
メッセージ = メッセージ _
& "「" & 色判定シート名 & "」シートに設定された条件を満たしたセルに色付けします。" & vbCrLf _
& "シート「" & 色設定列 & "」列目のセルに色を設定し、(複数色可)" & vbCrLf _
& "「" & 色値判定開始列 & "」列目以降に判定条件検索キーワードを設定してください。" _
& "(複数条件可)" & vbCrLf
'実行確認
If メッセージ <> "" Then
実行確認 = MsgBox(メッセージ & vbCrLf _
& "実行してよろしいですか?", vbYesNo + vbQuestion)
If 実行確認 = vbNo Then Exit Sub
End If
End If
''''''''''範囲指定''''''''''
Set 現在シート = ActiveWorkbook.ActiveSheet
If 範囲指定区分 = 0 Then
'データ有効範囲
Set 対象範囲 = 現在シート.UsedRange
ElseIf 範囲指定区分 = 1 Then
Set 対象範囲 = Selection
End If
'範囲から上下の行番号と左右の列番号を算出
':上下
開始行 = 対象範囲.Row
終了行 = 対象範囲.Row + 対象範囲.Rows.Count - 1
':左右
開始列 = 対象範囲.Column
終了列 = 対象範囲.Column + 対象範囲.Columns.Count - 1
''''''''''セルを別シートの条件によって色付け''''''''''
For 対象行 = 開始行 To 終了行 '開始行から終了行まで
For 対象列 = 開始列 To 終了列 '開始列から終了列まで
現在セル値 = 現在シート.cells(対象行, 対象列).Value
現在セル値テキスト = 現在シート.cells(対象行, 対象列).Text
現在セル値型 = VarType(現在セル値)
現在セル書式 = 現在シート.cells(対象行, 対象列).NumberFormatLocal
'デバッグ
'Debug.Print "現在セル値:" & 現在セル値
'Debug.Print "現在セル値テキスト:" & 現在セル値テキスト
'Debug.Print "現在セル値型:" & 現在セル値型
'Debug.Print "現在セル書式:" & 現在セル書式
If 現在セル値型 = vbString Then
'文字列比較の場合「文字列(String):8」
検索区分 = 0
ElseIf 現在セル値型 = vbDate Or IsDate("01/01/01 " & 現在セル値テキスト) Then
'日付・時刻比較の場合「日付(Date):7」または時刻と判断できる場合
'※書式が時刻の値はDoubleと判定されるため、数値比較より先に判断が必要
検索区分 = 1
ElseIf 現在セル値型 = vbInteger Or 現在セル値型 = vbLong Or 現在セル値型 = vbSingle _
Or 現在セル値型 = vbDouble Or 現在セル値型 = vbCurrency Then
'数値比較の場合
'「整数(Integer):2/長整数型(Long):3/単精度浮動小数点数型(Single):4/
' 倍精度浮動小数点数型(Double):5/通貨型(Currency):6」
検索区分 = 2
End If
If 現在セル値 = "" Then GoTo nextCell '空セルはスキップ
''''''''''色判定制御''''''''''
色設定最終行 = 色判定シート.cells(Rows.Count, 色値判定開始列).End(xlUp).Row
For 色値判定行 = 色設定開始行 To 色設定最終行
色値判定最終列 = 色判定シート.cells(色値判定行, Columns.Count).End(xlToLeft).Column
If 色値判定最終列 = 色設定列 Then GoTo nextColorLine '検索値設定がない場合はその色行はスキップ
For 色値判定列 = 色値判定開始列 To 色値判定最終列
'色判定シートの検索キーワードで現在シート値を判定して検索にヒットした場合、
'設定した背景色とフォント色を現在シートの対象セルに設定
色判定セル値 = 色判定シート.cells(色値判定行, 色値判定列).Value
色判定セル書式 = 現在シート.cells(対象行, 対象列).NumberFormatLocal
色変更フラグ = False
''''''''''値比較''''''''''
'On Error Resume Next
'└→例えば、型エラーになった場合など、無効にしてスキップしたい場合はコメントを外す。
If 検索区分 = 0 Then
'文字列比較
If 文字列比較(現在セル値テキスト, 色判定セル値) Then 色変更フラグ = True
ElseIf 検索区分 = 1 Then
'日付・時刻比較
比較演算子 = 比較演算子取得(色判定セル値)
'日付型ではない場合は時刻と判断する
'セルの値がhh:mm:ssの場合のみ(yyyy/mm/ddは対象外)時刻と判断する
If IsDate("01/01/01 " & 現在セル値テキスト) Then
現在セル値 = CDate(Format(現在セル値, "Long Time"))
End If
If IsDate(現在セル値) And 比較演算子 <> "" Then
日付比較値 = 比較用日付取得(比較演算子, 色判定セル値)
If 演算子比較(現在セル値, 比較演算子, 日付比較値) Then 色変更フラグ = True
Else
If 文字列比較(現在セル値テキスト, 色判定セル値) Then 色変更フラグ = True
End If
ElseIf 検索区分 = 2 Then
'数値比較
比較演算子 = 比較演算子取得(色判定セル値)
If IsNumeric(現在セル値) And 比較演算子 <> "" Then
数値比較値 = 比較用数値取得(比較演算子, 色判定セル値)
If 演算子比較(現在セル値, 比較演算子, 数値比較値) Then 色変更フラグ = True
Else
If 文字列比較(現在セル値テキスト, 色判定セル値) Then 色変更フラグ = True
End If
End If
'On Error GoTo 0 'エラーオブジェクト初期化
'└→例えば、型エラーになった場合など、無効にしてスキップしたい場合はコメントを外す。
''''''''''色付け''''''''''
If 色変更フラグ Then
'背景色クリア
現在シート.cells(対象行, 対象列).Interior.ColorIndex = 0
'フォント色クリア
現在シート.cells(対象行, 対象列).Font.Color = 0
'背景色
色判定シート背景色 = 色判定シート.cells(色値判定行, 色設定列).Interior.Color
If 色判定シート背景色 <> 16777215 Then '塗りつぶしなしの場合はスキップ
現在シート.cells(対象行, 対象列).Interior.Color = 色判定シート背景色
End If
'フォント色
色判定シートフォント色 = 色判定シート.cells(色値判定行, 色設定列).Font.Color
現在シート.cells(対象行, 対象列).Font.Color = 色判定シートフォント色
'一致した時点で抜ける(後続に同値があっても最初に見つかった方を優先)
GoTo nextCell '※後勝ちさせる場合はコメントアウト
End If
Next
nextColorLine:
Next
nextCell:
Next
Next
finally:
'''''''''''高速化対応'''''''''''
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function シート存在チェック(シートチェック名 As String)
Dim チェックシート As Worksheet
For Each チェックシート In ActiveWorkbook.Sheets
If チェックシート.name = シートチェック名 Then
シート存在チェック = True
Exit Function
End If
Next
シート存在チェック = False
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function 比較演算子取得(色判定セル値 As Variant)
If InStr(色判定セル値, "=") = 1 Then
比較演算子取得 = "="
ElseIf InStr(色判定セル値, "<>") = 1 Then
比較演算子取得 = "<>"
ElseIf InStr(色判定セル値, ">=") = 1 Then
比較演算子取得 = ">="
ElseIf InStr(色判定セル値, ">") = 1 Then
比較演算子取得 = ">"
ElseIf InStr(色判定セル値, "<=") = 1 Then
比較演算子取得 = "<="
ElseIf InStr(色判定セル値, "<") = 1 Then
比較演算子取得 = "<"
End If
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function 比較用数値取得(比較演算子 As String, 色判定数値 As Variant)
Dim 色判定セル値Array As Variant
Dim 分子 As Integer
Dim 分母 As Integer
Dim 数値比較値 As Variant
On Error Resume Next
数値比較値 = Replace(色判定数値, 比較演算子, "")
'分数→数値変換("/"が含まれる場合)
If InStr(数値比較値, "/") > 0 Then
色判定セル値Array = Split(数値比較値, "/")
分子 = Val(色判定セル値Array(0))
分母 = Val(色判定セル値Array(1))
数値比較値 = 分子 / 分母
End If
'パーセント→数値変換(最後が"%"の場合)
If InStr(色判定数値, "%") = Len(色判定数値) Then
数値比較値 = Val(Replace(数値比較値, "%", "")) * 0.01
End If
'値が数値の場合は文字列型を数値型に変換
If IsNumeric(数値比較値) Then 比較用数値取得 = Val(数値比較値)
On Error GoTo 0 'エラーオブジェクト初期化
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function 比較用日付取得(比較演算子 As String, 色判定日付)
Dim 日付比較値 As Variant
On Error Resume Next
日付比較値 = Replace(色判定日付, 比較演算子, "")
'値が日付の場合は文字列型を日付型に変換
If IsDate(日付比較値) Then 比較用日付取得 = CDate(日付比較値)
On Error GoTo 0 'エラーオブジェクト初期化
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function 文字列比較(現在セル値テキスト As String, 比較値 As Variant)
Dim 比較結果 As Boolean
'"*"が付いている場合
If InStr(比較値, "*") > 0 Then
'部分一致(シート値の中に検索キーワードが部分一致で含まれている場合)
'例1)検索キーワード「内閣*」、シート値「内閣総理大臣」「内閣官房」(前方一致)
'例2)検索キーワード「*内閣」、シート値「小泉内閣」「安倍内閣」 (後方一致)
If 現在セル値テキスト Like 比較値 Then 比較結果 = True
'"*"が付いていない場合
ElseIf InStr(比較値, "*") = 0 Then
'完全一致(曖昧検索ではない場合)
If 現在セル値テキスト = 比較値 Then 比較結果 = True
End If
文字列比較 = 比較結果
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function 演算子比較(現在セル値 As Variant, 比較演算子 As String, 比較値 As Variant)
Dim 比較結果 As Boolean
If 比較値 = "" Then
演算子比較 = False
Exit Function
End If
If 比較演算子 = "=" Then
If 現在セル値 = 比較値 Then 比較結果 = True
ElseIf 比較演算子 = "<>" Then
If 現在セル値 <> 比較値 Then 比較結果 = True
ElseIf 比較演算子 = ">=" Then
If 現在セル値 >= 比較値 Then 比較結果 = True
ElseIf 比較演算子 = ">" Then
If 現在セル値 > 比較値 Then 比較結果 = True
ElseIf 比較演算子 = "<=" Then
If 現在セル値 <= 比較値 Then 比較結果 = True
ElseIf 比較演算子 = "<" Then
If 現在セル値 < 比較値 Then 比較結果 = True
End If
演算子比較 = 比較結果
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub 新規シートを作成して色テンプレート設定()
'カラー一覧から割と見やすい色を適当に抽出した一覧を出力します。
'ご自由にカスタマイズしてください。
Const 色判定シート名 = "色"
Dim 色シート As Worksheet
If シート存在チェック(色判定シート名) Then
MsgBox "「" & 色判定シート名 & "」シートが既に存在するので新規作成できません。" & vbCrLf _
& "処理を終了します。"
Exit Sub
Else
Set 色シート = Worksheets.Add(After:=Sheets(ActiveSheet.index))
色シート.name = 色判定シート名
End If
'全セルを文字列型
色シート.cells.NumberFormatLocal = "@"
'背景色
色シート.cells(1, 1).Interior.Color = RGB(153, 153, 255) '17 #9999FF 16751001 グレー
色シート.cells(2, 1).Interior.Color = RGB(255, 255, 204) '19 #FFFFCC 13434879 アイボリー
色シート.cells(3, 1).Interior.Color = RGB(255, 128, 128) '22 #FF8080 8421631 コーラル
色シート.cells(4, 1).Interior.Color = RGB(0, 102, 204) '23 #0066CC 13395456 オーシャンブルー
色シート.cells(5, 1).Interior.Color = RGB(204, 204, 255) '24 #CCCCFF 16764108 アイスブルー
色シート.cells(6, 1).Interior.Color = RGB(0, 255, 255) '28 #0000FF 16776960 水色
色シート.cells(7, 1).Interior.Color = RGB(0, 128, 128) '31 #008080 8421376 青緑
色シート.cells(8, 1).Interior.Color = RGB(0, 204, 255) '33 #00CCFF 16763904 スカイブルー
色シート.cells(9, 1).Interior.Color = RGB(204, 255, 255) '34 #CCFFFF 16777164 薄い水色
色シート.cells(10, 1).Interior.Color = RGB(204, 255, 204) '35 #CCFFCC 13434828 薄い緑
色シート.cells(11, 1).Interior.Color = RGB(255, 255, 153) '36 #FFFF99 10092543 薄い黄
色シート.cells(12, 1).Interior.Color = RGB(153, 204, 255) '37 #99CCFF 16764057 ペールブルー
色シート.cells(13, 1).Interior.Color = RGB(255, 153, 204) '38 #FF99CC 13408767 ローズ
色シート.cells(14, 1).Interior.Color = RGB(204, 153, 255) '39 #CC99FF 16751052 ラベンダー
色シート.cells(15, 1).Interior.Color = RGB(255, 204, 153) '40 #FFCC99 10079487 ベージュ
色シート.cells(16, 1).Interior.Color = RGB(51, 102, 255) '41 #3366FF 16737843 薄い青
色シート.cells(17, 1).Interior.Color = RGB(51, 204, 204) '42 #33CCCC 13421619 アクア
色シート.cells(18, 1).Interior.Color = RGB(153, 204, 0) '43 #99CC00 52377 ライム
色シート.cells(19, 1).Interior.Color = RGB(255, 204, 0) '44 #FFCC00 52479 ゴールド
色シート.cells(20, 1).Interior.Color = RGB(255, 153, 0) '45 #FF9900 39423 薄いオレンジ
'フォント色(やや濃い背景色は変更)
色シート.cells(4, 1).Font.Color = RGB(255, 192, 0) '44 #FFC000 49407 オレンジ
色シート.cells(7, 1).Font.Color = RGB(255, 255, 0) '6 #FFFF00 65535 黄色
色シート.cells(16, 1).Font.Color = RGB(146, 208, 80) '43 #92D050 5296274 薄い緑
'色詳細
色シート.cells(1, 1).Value = "17 RGB(153, 153, 255) #9999FF 16751001 グレー"
色シート.cells(2, 1).Value = "19 RGB(255, 255, 204) #FFFFCC 13434879 アイボリー"
色シート.cells(3, 1).Value = "22 RGB(255, 128, 128) #FF8080 8421631 コーラル"
色シート.cells(4, 1).Value = "23 RGB(0, 102, 204) #0066CC 13395456 オーシャンブルー"
色シート.cells(5, 1).Value = "24 RGB(204, 204, 255) #CCCCFF 16764108 アイスブルー"
色シート.cells(6, 1).Value = "28 RGB(0, 255, 255) #0000FF 16776960 水色"
色シート.cells(7, 1).Value = "31 RGB(0, 128, 128) #008080 8421376 青緑"
色シート.cells(8, 1).Value = "33 RGB(0, 204, 255) #00CCFF 16763904 スカイブルー"
色シート.cells(9, 1).Value = "34 RGB(204, 255, 255) #CCFFFF 16777164 薄い水色"
色シート.cells(10, 1).Value = "35 RGB(204, 255, 204) #CCFFCC 13434828 薄い緑"
色シート.cells(11, 1).Value = "36 RGB(255, 255, 153) #FFFF99 10092543 薄い黄"
色シート.cells(12, 1).Value = "37 RGB(153, 204, 255) #99CCFF 16764057 ペールブルー"
色シート.cells(13, 1).Value = "38 RGB(255, 153, 204) #FF99CC 13408767 ローズ"
色シート.cells(14, 1).Value = "39 RGB(204, 153, 255) #CC99FF 16751052 ラベンダー"
色シート.cells(15, 1).Value = "40 RGB(255, 204, 153) #FFCC99 10079487 ベージュ"
色シート.cells(16, 1).Value = "41 RGB(51, 102, 255) #3366FF 16737843 薄い青"
色シート.cells(17, 1).Value = "42 RGB(51, 204, 204) #33CCCC 13421619 アクア"
色シート.cells(18, 1).Value = "43 RGB(153, 204, 0) #99CC00 52377 ライム"
色シート.cells(19, 1).Value = "44 RGB(255, 204, 0) #FFCC00 52479 ゴールド"
色シート.cells(20, 1).Value = "45 RGB(255, 153, 0) #FF9900 39423 薄いオレンジ"
'列幅調整
色シート.Columns(1).Columns.AutoFit
End Sub
実行方法
アクティブシートの全セルデータを対象とする場合は「セルを別シートの条件によって色付け1()」、選択セルデータのみに絞りたい場合は「セルを別シートの条件によって色付け2()」を実行してください。
色シートは任意で適当に設定してもらってよいですが、全セルで文字列型にしてください。 テンプレート「新規シートを作成して色テンプレート設定()」を実行してカスタマイズしてみてください。
使用例
例えば、こんな風に使ったらよいと思います。
最後に
Excelの使い方は人それぞれ、いろんなやり方があると思いますが、一例としてご紹介させていただきました。
ExcelVBAマクロはちょっとした向上心さえあれば、取っ付きやすいプログラムなのでショートカットキーなどと組み合わせてぜひ活用してみてください。
Excel全ショートカットキー一覧はこちら↓↓↓
ちょっと工夫すれば、ちょっとした操作に1分かかっていた作業を10秒でこなすことができるようになる可能性があります。
それだけでも、積み上げれば相当の工数を削減できるはずなので、ぜひ自分に合ったやり方を模索していきましょう。
コメント