SkillStack Lab 運営者の「スタック」です。
エクセルでデータ整理をしていると、ふと「このセルの中にある『重要』という文字だけを赤くしたいな」と思う瞬間、ありますよね。
リストを見やすくするために特定のキーワードだけを目立たせたい、そんなニーズは日常茶飯事です。
私も以前、商品リストの備考欄にある特定の注意書きだけを赤字にしたくて、「エクセル 特定の文字だけ色を変える 関数」と検索した経験があります。
IF関数やVLOOKUP関数の便利さを知っていると、きっと「文字の色を変える関数」もどこかにあるはずだと期待してしまいます。
しかし、実際に調べてみると、条件付き書式ではセル全体の色が変わってしまったり、置換機能を使っても思った通りの結果にならなかったりと、意外なほど壁が高いことに気づかされます。
結局、手作業で一つずつ色を変える羽目になり、「もっとスマートな方法はないのか…」とため息をついた方も多いのではないでしょうか。
この記事では、なぜエクセルの関数では文字単位の色変更ができないのかという技術的な理由から、その限界を突破するための具体的な解決策まで、私の検証結果をもとに分かりやすく解説します。
- エクセルの標準関数では「文字単位」の色変更ができない根本的な理由
- 「条件付き書式」を使って特定の文字を含むセル全体を強調する代替案
- VBA(マクロ)を使って特定の文字色だけを全自動で変える具体的なコード
- Wordの機能を借りてプログラミング不要で一括置換する裏技テクニック

エクセルの関数で特定の文字だけ色を変えることは可能か
結論から申し上げますと、私たちが普段使っているSUMやIF、VLOOKUPといった「ワークシート関数」を使って、セル内の「特定の文字だけ」の色を変えることは、残念ながらできません。
これは私の知識不足ではなく、エクセルの仕様上の限界なのです。
多くのユーザーがこの事実に直面したとき、「あんなに高機能なエクセルなら、これくらい簡単にできそうなのに」と疑問を抱きます。
ここでは、なぜそれが難しいのかという技術的な背景と、関数に近い感覚で使える代替案について、掘り下げて解説していきます。

条件付き書式なら特定の文字を含むセルの色を変える
関数で直接文字色を変えることはできませんが、最も近い動きをする機能として「条件付き書式」があります。
これは「特定の文字が含まれている場合、セル全体の色を変える」というアプローチです。

例えば、「重要」という文字が含まれているセルを赤くしたい場合、SEARCH関数やCOUNTIF関数を条件式に組み込むことで実現できます。
これは関数そのもので色を変えるわけではありませんが、関数のロジックを使って書式を制御するという点で、多くのユーザーが求めている「自動化」のニーズに近い解決策です。
COUNTIF関数を使った判定方法
最もポピュラーなのがCOUNTIF関数を使う方法です。ワイルドカード(*)を使用することで、「〜を含む」という条件を簡単に作れます。
数式入力の例
「数式を使用して、書式設定するセルを決定」を選択し、以下の数式を入力します。
=COUNTIF(A1, "重要")
※A1は対象範囲の先頭セルを指定します。
SEARCH関数を使った判定方法
もう一つよく使われるのがSEARCH関数です。
こちらは文字の位置を数値で返す関数ですが、ISNUMBER関数と組み合わせることで「文字が含まれているか(数値が返ってくるか)」を判定します。
数式入力の例
=ISNUMBER(SEARCH("重要", A1))
この方法の最大のメリットは、データが変更されたときに自動的に色が反映される点です。関数的な動的処理を求めている方にとっては、これが一番納得感のある妥協点になるかなと思います。
ただし、あくまで「セル全体」の色が変わるだけなので、文章の中の単語だけをハイライトしたいという本来の要望は満たせません。
エクセルの置換機能で文字の色を変える際の効果と限界
次に思いつくのが「検索と置換」機能(ショートカットキー:Ctrl+H)ですよね。置換ダイアログの「オプション」を開くと、「書式」を設定できるボタンが見つかります。
これを使えば、「重要」という文字を検索して、置換後の文字列に「赤色の書式」を設定できそうに見えます。
しかし、実際に試してみると分かりますが、これも「セル全体」の書式が変わってしまうんです。
置換機能の落とし穴
例えば「この案件は重要です」というセルの「重要」だけを赤くしようとして置換を実行すると、セル全体が「この案件は重要です」と赤くなってしまいます。
「エクセル 置換 色を変える」で検索してたどり着いた方の多くが、この挙動にがっかりするのではないでしょうか。
手作業で文字を選択して色を変える手間を省きたいのに、標準機能の置換では文字単位の細かい制御までは手が届かないのが現状です。
スプレッドシートで特定の文字だけ色を変える別の選択肢
最近はGoogleスプレッドシートを併用している方も多いと思います。「スプレッドシートなら関数でできるのでは?」と期待する声も聞きます。
Webベースで進化が早いツールですからね。
しかし、こちらも標準のセル関数(Formula)だけで文字の一部の色を変えることはできません。
エクセルと同様、関数は値を計算するものであり、リッチテキスト(書式付きテキスト)を生成するものではないからです。
ただ、スプレッドシートの場合は「Google Apps Script (GAS)」というスクリプト言語があり、エクセルのVBAに相当する機能を持っています。
GASの RichTextValue というビルダークラスを使うことで、文字単位の装飾が可能になります。もしエクセルにこだわりがなく、環境を選べるのであれば、スプレッドシートに移ってGASを組むというのも一つの手かもしれません。
特定の文字色を変える複数の条件を扱う際の問題点
実務では「『緊急』は赤、『注意』は黄色、『完了』はグレーにしたい」といった具合に、複数の条件を扱いたいケースが多々あります。
条件付き書式であれば、ルールを3つ追加すれば対応可能です。
しかし、もし文字単位でこれをやりたいとなると、手作業では絶望的な作業量になりますよね。
さらに厄介なのが、一つのセルの中に複数のキーワードが含まれている場合です。例えば「緊急かつ注意が必要」という文章があった場合、「緊急」を赤くし、「注意」を黄色にする必要があります。
これを関数や標準機能で制御しようとすると、優先順位の設定や文字位置の特定など、複雑さが指数関数的に増してしまいます。
条件付き書式の限界
条件付き書式を多用しすぎると、エクセルの動作が重くなる原因になります。
特に数千行を超えるデータで複雑な数式条件を設定する場合は注意が必要です。ファイルを開くたびに再計算が走り、フリーズの原因になることもあります。
数式で特定の文字だけ色を変えることができない理由
なぜエクセルはこんなに便利なのに、関数で文字色を変えられないのでしょうか。
少し技術的な話になりますが、これはエクセルの設計思想に関わっています。
エクセルの中で、関数は「値(Value)」を返す役割に特化しています。一方で、文字の色や太字といった情報は「書式(Format)」という別の層で管理されています。
もし関数が計算のついでに書式まで勝手に書き換えてしまうと、再計算のたびに画面の描画処理が走り、エクセルの動作が不安定になったり、無限ループ(循環参照のような状態)に陥ったりするリスクがあるのです。
そのため、マイクロソフトは意図的に「ワークシート関数からはセルの値しか操作できない」という制限を設けています。
この仕様がある限り、今後新しいバージョンが出ても、関数だけで文字色を変えられるようになる可能性は低いでしょう。
💡 「エクセルって意外とかゆいところに手が届かない…」と歯がゆい思いをしていませんか?
ブログのテキストや分厚い専門書でVBAのコードを解読するのは、実は非常にハードルが高く、9割の人が途中で挫折してしまいます。
確実に実務で使えるスキルを身につけるなら、文字を追うのではなく「プロの画面の動きを動画でそのまま真似する」のが一番の近道です。
元社内SEの視点で、小難しい理論は抜きにして、明日からの面倒な手作業を劇的にラクにする「超・実践的なUdemy神講座」だけを厳選しました。
※Udemyは頻繁に90%OFFセール(1,500円前後)を行っています。絶対に定価では買わず、まずはセールが開催されていないかチェックして、賢く自己投資を始めてみてください!
\ 本でのVBA独学から卒業するなら /

エクセルの関数を使わず特定の文字だけ色を変える解決策
関数でできないからといって諦める必要はありません。
ここからは、私が実際に試して有効だった「関数以外の解決策」を3つ紹介します。プログラミングが必要な高度な方法から、誰でもできる裏技まで幅広く用意しました。
VBAを活用して特定の文字だけ色を変える自動化手法
「どうしてもセル内の一部の文字だけ色を変えたい」という場合、最も確実なのがVBA(マクロ)を使う方法です。
VBAであれば、Characters オブジェクトという機能を操作して、文字の開始位置と長さを指定し、ピンポイントで色を変更できます。
以下に、選択した範囲の中で「特定の文字」だけを赤くするコードを紹介します。これを標準モジュールに貼り付ければすぐに使えます。
Sub 特定文字の色を変更する() ' 変数の宣言 Dim rng As Range Dim cell As Range Dim searchStr As String Dim startPos As Integer Dim strLen As Integer
' 検索したい文字を指定(ここを書き換えてください)
searchStr = "重要"
strLen = Len(searchStr)
' 処理速度向上のため画面更新を停止
Application.ScreenUpdating = False
' 選択範囲の各セルをループ処理
For Each cell In Selection
' 文字列が入っている場合のみ処理を実行
If Not IsError(cell.Value) And VarType(cell.Value) = vbString Then
' 最初の文字位置を検索
startPos = InStr(1, cell.Value, searchStr)
' 文字が見つかる限り繰り返す(Do Whileループ)
Do While startPos > 0
' Charactersオブジェクトで色と太字を設定
With cell.Characters(Start:=startPos, Length:=strLen).Font
.Color = vbRed ' 赤色
.Bold = True ' 太字
End With
' 次の文字を探す(開始位置をずらす)
startPos = InStr(startPos + 1, cell.Value, searchStr)
Loop
End If
Next cell
' 画面更新を再開
Application.ScreenUpdating = True
MsgBox "色の変更が完了しました!"
End Sub
このコードを使えば、関数では不可能だった「セル内部分一致の着色」が完全に自動化できます。
InStr関数で文字の位置を特定し、Charactersプロパティでその部分だけを書式設定するという流れです。
(出典:Microsoft Learn『Characters オブジェクト (Excel)』)

特定の文字色を変える複数の指定を一括処理するマクロ
先ほどのコードは1つの単語だけでしたが、「赤」「青」「黄」のように複数のキーワードをそれぞれの色に変えたい場合もあるでしょう。
その場合は、キーワードと色の組み合わせをリスト化して、ループ処理で回すマクロを作成します。
VBAを使えば、「A列にあるキーワードリストを読み込んで、B列の文章を順次加工する」といった高度な処理も可能です。これを手作業でやろうとすると何時間もかかりますが、マクロなら数秒で終わります。
業務効率化の効果は絶大ですね。
自動化のヒント
キーワードリストを配列(Array)に入れて管理すると、コードがすっきりしてメンテナンスもしやすくなります。
例えば、商品リストから「廃盤」は赤、「新商品」は青、といったルールを一括適用する際に非常に役立ちます。
Wordを経由して特定の文字だけ色を変える簡単な裏技
「VBAは難しそうだし、会社のセキュリティでマクロが使えない…」という方には、Microsoft Wordを使った連携技がおすすめです。
実はWordの置換機能は、エクセルよりも優秀で、文字単位の書式設定が可能です。
この方法は少しアナログですが、プログラミング知識が一切不要で、かつ確実に結果を出せるため、私がよく初心者に勧めているテクニックです。
Word連携の具体的な手順
- エクセルで色を変えたいセル範囲をコピーします。
- Wordを起動し、そのまま貼り付けます(表として貼り付けられます)。
- Wordの「検索と置換」を開きます(ショートカット:Ctrl+H)。
- 「オプション」ボタンをクリックして詳細設定を開きます。
- 「検索する文字列」にキーワード(例:重要)を入力します。
- 「置換後の文字列」の欄をクリックした状態で、下部の「書式」ボタンから「フォント」を選び、赤色などを設定します。
- 「すべて置換」を実行します。これでWord上の特定の文字だけ色が変わりなす。
- Word上の表を全選択してコピーし、エクセルに貼り戻します。

この方法なら、数百行程度のデータであれば、マクロを作るよりも早く作業が終わることもあります。
「ツールは使いよう」ですね。
Web版エクセルで特定の文字だけ色を変える際の制約
最近増えているWeb版エクセル(Excel for the Web)を使用している場合は、注意が必要です。
Web版では従来のVBAマクロが動きません。
代わりに「Office Scripts(オフィススクリプト)」というTypeScriptベースの新しい自動化機能が提供されていますが、現時点(2025年)の技術情報では、デスクトップ版のVBAほど細かな文字操作(Charactersオブジェクトのような部分的な書式設定)が完全にサポートされていないか、実装が非常に複雑になるケースがあります。
Web版ユーザーへのアドバイス
Web版をメインで使っている場合は、無理に文字単位の色変更にこだわらず「条件付き書式」で妥協するか、どうしても必要な時だけデスクトップアプリ版でファイルを開いて編集することをお勧めします。
💡 「エクセルでの業務効率化」に限界を感じていませんか?
エクセルでの細かな書式設定や視覚化は便利ですが、社内向けの報告書や申請書類のフォーマットをエクセルでガチガチに作り込み、メンテナンスに追われ続けるのは、実はかなりの時間と労力(コスト)がかかります。
「関数やマクロのエラーに怯える日々から抜け出したい」
「誰かが休むと業務が回らない『エクセル属人化』を根本から解消したい」
そう感じたことのある総務・経理・バックオフィス担当者に向けて、元社内SE・現役管理職の視点で「日々の定型業務を劇的に楽にする脱エクセル(SaaS)ツール」を厳選しました。
いきなり会社で稟議を通す必要はありません。時間を無駄にせず業務を効率化したい方は、まずはノーリスクの無料登録や資料請求を活用して、専用ツールの圧倒的な「ラクさ」をご自身の目で確かめてみてください。
\ エクセルの手作業を今日でやめるなら /
エクセルで特定の文字だけ色を変える関数の代替案まとめ
今回は「エクセル 特定の文字だけ色を変える 関数」というテーマで解説してきました。
残念ながら関数一発で解決する方法はありませんが、状況に応じたベストな代替案は存在します。
最後に、それぞれの方法の選び方を整理しておきましょう。

| 方法 | メリット | デメリット | おすすめの場面 |
|---|---|---|---|
| 条件付き書式 | 自動更新される 設定が簡単 | セル全体の色が変わる | 手軽に目立たせたい時 |
| VBA(マクロ) | 文字単位で完璧に変えられる 大量処理が可能 | コード作成が必要 セキュリティ制限 | 定型業務で毎日使う時 |
| Word連携 | コード不要 誰でもできる | 手作業が発生する データ更新に対応しない | 単発の資料作成時 |

関数にこだわらず、これらの機能を使い分けることが、エクセルマスターへの近道です。
正確な情報はマイクロソフトの公式サイトも確認しつつ、ぜひご自身の環境に合った方法を試してみてください。
