SkillStack Lab 運営者の「スタック」です。
Excelで「この案件は重要です」のような文章から、「重要」という文字だけ赤くしたいことはありませんか。
結論から言うと、Excelのワークシート関数だけで、セル内の特定文字だけ文字色を変えることはできません。セル全体を強調するなら条件付き書式、文字の一部分だけ色を変えるなら手作業またはVBAを使います。
私も以前、商品リストの備考欄にある特定の注意書きだけを赤字にしたくて、「エクセル 特定の文字だけ色を変える 関数」と調べたことがあります。
スタックIF関数のように「重要なら赤」と書けそうですが、文字の一部分だけとなると話が変わります。


この記事では、関数ではできない理由を必要最小限に整理したうえで、条件付き書式、VBA、Wordを使った代替方法を解説します。
- 関数で特定文字だけ色を変えられるか
- 条件付き書式で「重要」を含むセルを自動で赤くする方法
- VBAで「重要」という文字だけ赤くする方法
- 複数のキーワードへ色を付けるときの考え方
- Excel for the webを使っている場合の注意点
エクセルの関数で特定の文字だけ色を変えることはできない
SUM、IF、XLOOKUPなどのワークシート関数を使って、セル内の一部分だけ文字色を赤や青に変更することはできません。
例えばA2セルに、
この案件は重要です
と入力されている場合、関数によって「重要」という3文字だけを赤くすることはできません。


ワークシート関数は計算結果や文字列などをセルへ返すための機能です。一方、フォントの色・太字・塗りつぶしなどはセルの書式として扱われます。
そのため、目的によって次のように使い分けます。
| やりたいこと | 方法 |
|---|---|
| 「重要」を含むセル全体を赤字にする | 条件付き書式 |
| 「重要」という文字だけ赤字にする | 手作業またはVBA |
| 何度も大量に処理する | VBA |
| 数件だけ処理する | 手作業でも十分 |
「関数でできる方法」を探し続けるより、まずセル全体でよいのか、文字の一部分だけでなければいけないのかを決めることが重要です。
条件付き書式なら「重要」を含むセル全体の色を変えられる
「重要」という部分だけでなく、その文字を含むセル全体を赤字にしてもよいのであれば、VBAを使う必要はありません。
条件付き書式を使えば、セルの内容が変わったときも条件に応じて自動的に書式が切り替わります。
一番簡単なのは「文字列を含む」ルール
例えばA2:A100の中から「重要」を含むセルを赤くするなら、次の手順です。
- A2:A100を選択する
- [ホーム]→[条件付き書式]を開く
- [セルの強調表示ルール]→[文字列]を選ぶ
- 「重要」と入力する
- 文字色や塗りつぶしを設定する
単純に特定キーワードを含むセルを目立たせるだけなら、この方法が最も簡単です。
条件付き書式で変わるのは基本的にセルの書式です。「この案件は重要です」の「重要」だけを赤くする方法ではありません。
SEARCH関数を使って条件を作る方法
他の条件と組み合わせたい場合は、「数式を使用して、書式設定するセルを決定」を使う方法があります。
A2セルに「重要」が含まれているか判定するなら、次の式です。
=ISNUMBER(SEARCH("重要",A2))
SEARCH関数は、指定した文字列が見つかると開始位置を数値で返します。そこでISNUMBERを組み合わせ、見つかった場合だけTRUEになるようにしています。
COUNTIFを使うならワイルドカードを付ける
COUNTIFを使う方法もあります。
=COUNTIF(A2,"*重要*")>0
*は任意の文字列を表すワイルドカードです。
そのため、「重要」だけのセルだけでなく、
- 重要です
- この案件は重要です
- 重要事項を確認してください
なども対象になります。
特定の文字だけ色を変えるならVBAを使う
「セル全体ではなく、文章中の『重要』だけ赤くしたい」という場合は、VBAを使う方法があります。
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
コードを実行すると、例えば、
「この案件は重要です」
というセルでは「重要」に該当する部分だけ文字色を変更できます。
同じセル内に「重要」が複数回あっても、見つからなくなるまで繰り返し処理します。
このサンプルでは、操作を分かりやすくするため選択範囲の直接入力された文字列を対象とし、数式セルは処理対象から外しています。
マクロを使うときは対象範囲を確認する
このコードは「現在選択しているセル」が対象です。
そのため、いきなり業務ファイル全体を選択して実行するのではなく、まずコピーしたファイルや少数のセルで結果を確認してください。
インターネットから入手した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へ戻す方法でも、一括処理できました。
Wordを使う場合の流れ
- Excelで対象データのコピーを用意する
- 対象範囲をWordへ貼り付ける
Ctrl + Hで検索と置換を開く- 検索するキーワードを指定する
- 置換後の書式でフォントの色を指定する
- 置換結果を確認する
- 必要なデータだけExcelへ戻す
この方法は、数式・表示形式・セル結合などを含むExcel表をそのまま安全に往復させるための自動化方法ではありません。元ファイルを直接加工せず、コピーしたデータで試してください。
Excel for the webではVBAを実行できない
ブラウザで使うExcel for the webでは、VBAマクロを作成・実行・編集できません。
VBAを含むブック自体を開くことはできますが、今回紹介したCharactersを使ったマクロを実行する場合はデスクトップ版Excelが必要です。
Web版を中心に使っている場合は、まずセル全体を強調できる条件付き書式で目的を満たせないか検討してください。
Office Scriptsにはセル範囲のフォント色などを変更する機能がありますが、VBAのCharactersと同じ感覚でセル内の任意の文字列だけを書式設定する用途とは分けて考えた方が安全です。
エクセルで特定の文字だけ色を変えるときのよくある質問
まとめ|セル全体なら条件付き書式、文字だけならVBA
Excelで特定の文字だけ色を変えたい場合は、最初に「セル全体の色変更でよいか」を確認してください。
- 関数だけでセル内の特定文字だけ色を変えることはできない
- セル全体なら条件付き書式が簡単
- 部分文字だけならVBAのCharactersを使える
- 単発の静的データならWord経由も選択肢
- Excel for the webではVBAを実行できない
数件しかないなら手作業の方が早いこともあります。一方、数百件を定期的に処理するなら、自動化に切り替える価値があります。
VBAだけでなく、Power QueryやOffice Scripts、Pythonなども含めてExcel業務をどう自動化するか比較したい方は、次の記事も参考にしてください。








