エクセルで特定の文字だけ色を変える関数はある?条件付き書式・VBAで解決

エクセルで特定の文字だけ色を変える関数はない?代替案を解説

SkillStack Lab 運営者の「スタック」です。

Excelで「この案件は重要です」のような文章から、「重要」という文字だけ赤くしたいことはありませんか。

結論から言うと、Excelのワークシート関数だけで、セル内の特定文字だけ文字色を変えることはできません。セル全体を強調するなら条件付き書式、文字の一部分だけ色を変えるなら手作業またはVBAを使います。

私も以前、商品リストの備考欄にある特定の注意書きだけを赤字にしたくて、「エクセル 特定の文字だけ色を変える 関数」と調べたことがあります。

スタック

IF関数のように「重要なら赤」と書けそうですが、文字の一部分だけとなると話が変わります。

Excelのセル内にある重要という文字だけを赤くできる関数があるかを示すイメージ

この記事では、関数ではできない理由を必要最小限に整理したうえで、条件付き書式、VBA、Wordを使った代替方法を解説します。

この記事で分かること
  • 関数で特定文字だけ色を変えられるか
  • 条件付き書式で「重要」を含むセルを自動で赤くする方法
  • VBAで「重要」という文字だけ赤くする方法
  • 複数のキーワードへ色を付けるときの考え方
  • Excel for the webを使っている場合の注意点
目次

エクセルの関数で特定の文字だけ色を変えることはできない

SUM、IF、XLOOKUPなどのワークシート関数を使って、セル内の一部分だけ文字色を赤や青に変更することはできません。

例えばA2セルに、

この案件は重要です

と入力されている場合、関数によって「重要」という3文字だけを赤くすることはできません。

Excelのセルの値と文字色などの書式が別の要素であることを示す図解

ワークシート関数は計算結果や文字列などをセルへ返すための機能です。一方、フォントの色・太字・塗りつぶしなどはセルの書式として扱われます。

そのため、目的によって次のように使い分けます。

やりたいこと方法
「重要」を含むセル全体を赤字にする条件付き書式
「重要」という文字だけ赤字にする手作業またはVBA
何度も大量に処理するVBA
数件だけ処理する手作業でも十分

「関数でできる方法」を探し続けるより、まずセル全体でよいのか、文字の一部分だけでなければいけないのかを決めることが重要です。

条件付き書式なら「重要」を含むセル全体の色を変えられる

「重要」という部分だけでなく、その文字を含むセル全体を赤字にしてもよいのであれば、VBAを使う必要はありません。

条件付き書式を使えば、セルの内容が変わったときも条件に応じて自動的に書式が切り替わります。

一番簡単なのは「文字列を含む」ルール

例えばA2:A100の中から「重要」を含むセルを赤くするなら、次の手順です。

  1. A2:A100を選択する
  2. [ホーム]→[条件付き書式]を開く
  3. [セルの強調表示ルール]→[文字列]を選ぶ
  4. 「重要」と入力する
  5. 文字色や塗りつぶしを設定する

単純に特定キーワードを含むセルを目立たせるだけなら、この方法が最も簡単です。

条件付き書式で変わるのは基本的にセルの書式です。「この案件は重要です」の「重要」だけを赤くする方法ではありません。

SEARCH関数を使って条件を作る方法

他の条件と組み合わせたい場合は、「数式を使用して、書式設定するセルを決定」を使う方法があります。

A2セルに「重要」が含まれているか判定するなら、次の式です。

=ISNUMBER(SEARCH("重要",A2))

SEARCH関数は、指定した文字列が見つかると開始位置を数値で返します。そこでISNUMBERを組み合わせ、見つかった場合だけTRUEになるようにしています。

COUNTIFを使うならワイルドカードを付ける

COUNTIFを使う方法もあります。

=COUNTIF(A2,"*重要*")>0

*は任意の文字列を表すワイルドカードです。

そのため、「重要」だけのセルだけでなく、

  • 重要です
  • この案件は重要です
  • 重要事項を確認してください

なども対象になります。

条件付き書式では、条件判定にTRUEまたはFALSEを返す数式を利用できます。詳細はMicrosoftサポートの条件付き書式の解説で確認できます。

特定の文字だけ色を変えるならVBAを使う

「セル全体ではなく、文章中の『重要』だけ赤くしたい」という場合は、VBAを使う方法があります。

Excel VBAには、セル内の指定した位置・文字数を扱えるCharactersプロパティがあります。

Excel VBAのCharactersを使ってセル内の特定文字だけ色を変える仕組み

「重要」という文字だけ赤くするVBAコード

次のマクロは、選択しているセルの中から「重要」を探し、その部分だけ赤字・太字にします。

Sub 特定文字を赤くする()

    Const SEARCH_TEXT As String = "重要"

    Dim cell As Range
    Dim textValue As String
    Dim startPos As Long
    Dim foundPos As Long

    On Error GoTo ExitHandler

    Application.ScreenUpdating = False

    For Each cell In Selection.Cells

        If Not cell.HasFormula And Not IsError(cell.Value2) Then

            textValue = CStr(cell.Value2)
            startPos = 1

            Do
                foundPos = InStr(startPos, textValue, SEARCH_TEXT, vbTextCompare)

                If foundPos = 0 Then Exit Do

                With cell.Characters( _
                    Start:=foundPos, _
                    Length:=Len(SEARCH_TEXT) _
                ).Font
                    .Color = vbRed
                    .Bold = True
                End With

                startPos = foundPos + Len(SEARCH_TEXT)

            Loop

        End If

    Next cell

ExitHandler:
    Application.ScreenUpdating = True

End Sub

コードを実行すると、例えば、

「この案件は重要です」

というセルでは「重要」に該当する部分だけ文字色を変更できます。

同じセル内に「重要」が複数回あっても、見つからなくなるまで繰り返し処理します。

このサンプルでは、操作を分かりやすくするため選択範囲の直接入力された文字列を対象とし、数式セルは処理対象から外しています。

Microsoft Learnでも、Range.Charactersはセル内の文字列の一部分を取得し、その文字だけを書式設定するための機能として案内されています。詳しくはRange.Characters プロパティを確認してください。

マクロを使うときは対象範囲を確認する

このコードは「現在選択しているセル」が対象です。

そのため、いきなり業務ファイル全体を選択して実行するのではなく、まずコピーしたファイルや少数のセルで結果を確認してください。

インターネットから入手したVBAコードを、内容を確認せずマクロ有効化して実行しないでください。会社のセキュリティポリシーがある場合は、そのルールを優先します。

VBAを使い続けるべきか、Power QueryやOffice Scriptsなど別の方法へ移行すべきか迷っている場合は、VBAを使うべき業務と代替手段を整理した記事も参考にしてください。

「緊急」「注意」「完了」など複数の文字へ色を付ける場合

実務では1つのキーワードだけとは限りません。

例えば、

  • 緊急 → 赤
  • 注意 → オレンジ
  • 完了 → グレー

のようなルールを作りたい場合があります。

セル全体なら条件付き書式を複数設定する

セル全体の文字色や背景色を変えるだけなら、それぞれに条件付き書式を設定すれば対応できます。

複数のルールが同じセルに該当する場合は、条件付き書式の「ルールの管理」で適用順序も確認してください。

文字ごとに色を変えるならVBAのルールを増やす

一つのセルに「緊急かつ注意が必要」と書かれていて、緊急だけ赤、注意だけ別の色にしたい場合はVBA向きです。

キーワードと色の組み合わせをコード内の配列や、別シートのルール表として管理すれば、条件を追加しやすくなります。

ルールが頻繁に変わる業務では、キーワードをコードへ直接書き続けるより、シート上に「キーワード」「文字色」などの設定表を作る方が保守しやすくなります。

Excelの置換では文字色変更の主解決策にならない

Ctrl + Hで開く「検索と置換」にも書式を指定する機能があります。

ただし、検索と置換は文字列やセルの書式を検索・置換するための機能です。

今回のように「セルの文章はそのままにして、該当する3文字だけ赤くする」処理を自動化したいなら、Charactersを利用できるVBAの方が目的を明確に実装できます。

文字そのものを大量に置き換えたい場合は、Excelの置換作業を自動化する方法で、VBAやPower Queryを使った別の方法も解説しています。

VBAを使えないならWordを経由する方法もある

「マクロを使えないが、数十件から数百件程度の静的な文字データを一度だけ処理したい」という場合は、Wordの検索と置換を使う方法もあります。

私が試した範囲では、Excelから文字データをWordへコピーし、Word側でキーワードへ文字色を設定してからExcelへ戻す方法でも、一括処理できました。

私なら、数式や重要な表構造が入った業務ファイルそのものではなく、コピーしたデータで試します。単発処理には使えても、毎日繰り返す作業ならVBAなど別の方法を選びます。

Wordを使う場合の流れ

  1. Excelで対象データのコピーを用意する
  2. 対象範囲をWordへ貼り付ける
  3. Ctrl + Hで検索と置換を開く
  4. 検索するキーワードを指定する
  5. 置換後の書式でフォントの色を指定する
  6. 置換結果を確認する
  7. 必要なデータだけExcelへ戻す

この方法は、数式・表示形式・セル結合などを含むExcel表をそのまま安全に往復させるための自動化方法ではありません。元ファイルを直接加工せず、コピーしたデータで試してください。

Excel for the webではVBAを実行できない

ブラウザで使うExcel for the webでは、VBAマクロを作成・実行・編集できません。

VBAを含むブック自体を開くことはできますが、今回紹介したCharactersを使ったマクロを実行する場合はデスクトップ版Excelが必要です。

Web版を中心に使っている場合は、まずセル全体を強調できる条件付き書式で目的を満たせないか検討してください。

Office Scriptsにはセル範囲のフォント色などを変更する機能がありますが、VBAのCharactersと同じ感覚でセル内の任意の文字列だけを書式設定する用途とは分けて考えた方が安全です。

エクセルで特定の文字だけ色を変えるときのよくある質問

IF関数で特定の文字だけ赤くできますか?

できません。IF関数で条件を判定することはできますが、セル内の一部分だけ文字色を変更する機能はありません。セル全体なら条件付き書式と組み合わせます。

条件付き書式で「重要」だけ赤くできますか?

「重要」を含むセル全体を赤字や赤背景にすることはできますが、文章中の「重要」という部分だけに条件付き書式を適用する方法ではありません。

「重要」が1セルに2回あってもVBAで色を変えられますか?

可能です。この記事のサンプルコードは、対象文字が見つからなくなるまで検索を繰り返すため、同じセル内に複数ある「重要」も順番に処理します。

マクロを使わず自動で特定文字だけ色を変えられますか?

セル内の一部分だけを動的に自動着色する用途では、標準関数や条件付き書式だけでは対応できません。セル全体の強調でよければ条件付き書式を使うのが簡単です。

Excel for the webでVBAは使えますか?

Excel for the webではVBAマクロを作成・実行・編集できません。VBAを使う場合はデスクトップ版Excelで開きます。

まとめ|セル全体なら条件付き書式、文字だけならVBA

Excelで特定の文字だけ色を変えたい場合は、最初に「セル全体の色変更でよいか」を確認してください。

  • 関数だけでセル内の特定文字だけ色を変えることはできない
  • セル全体なら条件付き書式が簡単
  • 部分文字だけならVBAのCharactersを使える
  • 単発の静的データならWord経由も選択肢
  • Excel for the webではVBAを実行できない

数件しかないなら手作業の方が早いこともあります。一方、数百件を定期的に処理するなら、自動化に切り替える価値があります。

VBAだけでなく、Power QueryやOffice Scripts、Pythonなども含めてExcel業務をどう自動化するか比較したい方は、次の記事も参考にしてください。


次は、仕事で使えるスキルをもう一段積み上げる

SkillStack Labでは、Excel・生成AI・自動化・オンライン学習を、実務で使うことを前提に解説しています。今の課題に近いテーマから次の記事へ進んでみてください。

生成AIを仕事で使いたい

ChatGPTなどを「触ったことがある」から、実際の仕事で使えるレベルへ進みたい方へ。

生成AIの勉強方法・学習順序を見る →

Excel作業を自動化したい

関数だけでは限界を感じてきたら、Power Query・VBA・Pythonなども含めて自動化を考えます。

Excel業務を自動化する方法を見る →

体系的にスキルを学びたい

Excel・VBA・Python・生成AIなどを、動画講座で効率よく学びたい方へ。

社会人向けUdemy講座の選び方を見る →

何から始めるか迷ったら、今の仕事で最も時間がかかっている作業や、身につけたいスキルに近いテーマから選んでください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次