【ExcelVBA】条件付き書式を使わずに該当セルに超簡単色付け

快速ワーク
スポンサーリンク

Excelの条件付き書式は便利ですよね。条件によってセルに色付けしてデータをわかりやすく参照する時などにとても有効ですね。

ですが、条件設定がわかりにくかったり、メモリを消費して重くなったり、行コピーすると設定がおかしくなったり、いろいろと残念な場面が結構ありませんか?

そんな時、複数の色や複数の条件を簡単に設定管理し、色付けしてデータを解析しやすくなると作業も効率化できると思います。

そこで、別シートに細かく設定した背景色とフォント色、検索キーワードの条件を一覧で設定し、セル単位に簡単に色付けできるマクロを作成してみました。

百聞は一見に如かず、一目瞭然、一発でイメージが湧き、使い方がわかるようなGIFアニメ付きです。

個人用マクロなどにコピーして実行するだけなので、ぜひお試しください。


スポンサーリンク

条件付き書式を使うとルールの管理が大変

条件付き書式を完璧に使いこなしている人はよいですが、管理が面倒と感じている人は条件付き書式を使うことを躊躇してしまいますよね。

主な問題点は以下です。同じように考えている人はいませんか?

行コピーすると条件が壊れる

個人的には、Excelの条件付き書式による一番の致命的な問題は、行コピーすると設定がおかしくなる点にあると思ってます。下記画像のように。

行コピーは誰でも普通に使う操作なので、条件付き書式を敬遠してしまう一つの要因になりますよね。壊れまくってしまった条件をメンテしていこうとは思わないですからね。

セルコピーすると条件付き書式も一緒に引き継がれてしまう

条件付き書式で設定されたセルの状態をそのまま別ブックや別シートに条件付き書式なしで背景色やフォント色をコピーしたい時ってありませんか?

残念ながら、条件付き書式自体が一緒にコピーされてしまいます。裏技があるかもしれせんが、通常の操作ではたぶん不可能です。

条件付き書式は使わなくて済むならば使わない方がよい?

条件付き書式は当然使いこなせればとても便利ですが、個人的にはとても使いづらい機能であることは否めません。

誰かがきっとメンテしてくれるから、条件付き書式はいじらない、壊れても気にしない、という人はよいと思いますが、仕事などで使う大事なデータをきっちり管理し、メンテしていく人にとっては別の手段を考えてみてもよいのかなと思います。

かく言う私は結構バリバリ条件付き書式を使ってますが、使いづらいなぁと感じることは多々あるので、上記問題点を少しでも軽減するために条件付き書式を使わずとも設定条件により柔軟に色付けできる方法を模索してみました。


別シート条件でセル色付けVBAマクロ作成

条件付き書式は通常、行や列などのある程度まとまった範囲で指定して書式を設定することになると思いますが、実際のセルに設定されている値とあらかじめ設定しておいた条件値で判定してセルに色付けできるときっと便利ですよね。

そんなマクロを作成してみました。概要は以下。

別シートに色と条件を設定

別シートに色を設定できると、一目瞭然でどんな条件でどの色を付けるかわかりやすく管理できると思ってます。

文字列・日付・数値の3パターンで判定

対象シートのセルに設定された文字列データ、日付データ(時刻含む)、数値データを判定できる仕様としています。

フォント色と背景色を塗りつぶして色分け

条件付き書式は枠線など、いろいろな書式設定が可能ですが、最も視覚的にデータの解析に有効な色の判断が最も重要ですよね。

別シートに設定したフォント色背景色で検索にひっかかったセルに色付けする処理としています。


別シート条件でセル色付けVBAマクロの主な仕様

細かい処理はコメントで補足してるので、ザックリとした仕様を箇条書きで記載します。

  • アクティブシートのセルを検索し、別シートの条件に一致したセルに色付けする。
  • 別シートに設定されたフォント色と背景色を反映する。
  • 実行判断の確認メッセージ制御(フラグon/offあり)
  • 色判定シートの検索キーワードに「*」を付けて部分一致検索。
  • 検索キーワード先頭に比較演算子「=,<>,>=,>,<=,<」を付けて日付・時刻、数値の比較検索。



別シート条件でセル色付けVBAマクロのソースコード

セルの色付けでデータ解析効率を爆上げしたい方は、下記のソースコードを以下↓↓↓のリンクの内容に従って個人用マクロにコピーしてご使用ください。

【Excel】超便利な個人用マクロブックにVBAを記録追加作成して実行【初心者も簡単】
仕事や勉強を行う上で、Excelを使用するならば、絶対に知っておいた方がよい「個人用マクロブックの設定方法」をまとめました。マクロを頻繁に使用する人、今まで「作業中のブック」のみに個別設定していた人は、自分の作業に合った共通処理の...

マクロならば、痒いところに手が届きます。用途によっては目的に沿わない可能性がありますが、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()」を実行してください。

色シートは任意で適当に設定してもらってよいですが、全セルで文字列型にしてください。 テンプレート「新規シートを作成して色テンプレート設定()」を実行してカスタマイズしてみてください。

マクロを使うとCtrl+Zでは元に戻らないのでご注意ください。マクロを使う場合はブックを保存した状態で実行する癖を付けることをオススメします。

使用例

例えば、こんな風に使ったらよいと思います。


最後に

Excelの使い方は人それぞれ、いろんなやり方があると思いますが、一例としてご紹介させていただきました。

ExcelVBAマクロはちょっとした向上心さえあれば、取っ付きやすいプログラムなのでショートカットキーなどと組み合わせてぜひ活用してみてください。

Excel全ショートカットキー一覧はこちら↓↓↓

Excelの使い方や機能がわかるショートカットキー全まとめ一覧【初心者こそ必見】
表計算ソフトとして王者であるExcel。たくさんの人が使っていると思います。まぁまぁ高額ではありますが、その分、高機能なので使い倒したいとは思いませんか?単に表データを扱うだけではなく、図を挿入できたり、設計書などのドキュ...

ちょっと工夫すれば、ちょっとした操作に1分かかっていた作業を10秒でこなすことができるようになる可能性があります。

それだけでも、積み上げれば相当の工数を削減できるはずなので、ぜひ自分に合ったやり方を模索していきましょう。


コメント

//▼2023/04/08追加 //https://lovagelab.com/posts/3406/ //▲2023/04/08追加