セルに色がついていたら ifで判定できる?

Excelで「色がついているセルだけをIFで判定したい」と思ったことはありませんか?たとえば、黄色のセルなら「確認済み」、赤色のセルなら「要対応」と表示したいケースです。この記事では、セルの色をIF関数だけで判定できるのか、できない場合の代替方法まで分かりやすく解説します。

この記事でわかること
  • セルに色がついていたらIFで判定できるのかが分かる
  • 色つきセルを判定したいときの現実的な方法が分かる
  • VBA・名前定義・条件付き書式の使い分けが分かる

関連する質問

Q

セルに色がついていたらカウントする関数は?

A

Excelの通常の関数では、セルの色を直接カウントすることはできません。色をカウントしたい場合は、VBAを使うか、手作業で色に基づくステータスを補助列に記入する方法がおすすめです。

Q

Excelでセルに色がついていたらどうしたらいいですか?

A

セルに色がついている場合、IF関数だけでは判定できません。条件付き書式を使っているなら、その条件をIF関数に利用するのが良いです。手作業で色を付けた場合は、補助列を使う方法が推奨されます。

Q

色がついているセルを抽出するには?

A

色がついているセルを抽出するには、VBAを用いるのが一般的です。また、条件付き書式で色を付けた場合は、その条件を基にフィルタリングすることも可能です。

目次

セルに色がついていたら ifで判定できる?結論から解説

結論からいうと、Excelの通常のIF関数だけでは、セルの背景色を直接判定することはできません。IF関数は「A1が100以上なら」「B1が空白なら」といった、セルの値や条件を比較するための関数です。Microsoft公式でも、IF関数は値と期待する内容を論理比較し、真の場合と偽の場合の結果を返す関数として説明されています。

IF関数は「セルの値」は判定できますが、「セルの塗りつぶし色」は通常そのまま判定できません

筆者
「色がついていたらIFで判定したい」と考える人は多いですが、Excelの標準関数では少し工夫が必要です。

IF関数でできること

IF関数で判定できるのは、主に数値・文字列・空白・日付・計算結果などです。

たとえば、A1セルに「完了」と入っていたら「OK」、それ以外なら「未対応」と表示する場合は、次のように書けます。

=IF(A1="完了","OK","未対応")

また、A1が100以上なら「合格」、そうでなければ「不合格」とする場合は、次のように書けます。

=IF(A1>=100,"合格","不合格")

このように、IF関数はセルの中身を条件にして結果を分けるのが基本です。

IF関数でできないこと

一方で、次のような式は通常のExcel関数としては使えません。

=IF(A1が黄色なら,"確認済み","未確認")

Excelのセルには、値・数式・書式・コメント・罫線・塗りつぶしなど、さまざまな情報があります。しかし、通常のIF関数は塗りつぶし色そのものを条件として参照する設計ではありません。

そのため、「色がついていたら」「赤なら」「黄色なら」といった判定をしたい場合は、別の方法を使う必要があります。

CELL関数で色を判定できるという誤解

ExcelにはCELL関数があり、セルの書式や位置、内容に関する情報を返せます。Microsoft公式でも、CELL関数はセルの書式・場所・内容に関する情報を返す関数として説明されています。

ただし、CELL関数で一般的な背景色の塗りつぶしを自由に判定できるわけではありません。特に、よくある「黄色で塗ったセルだけを判定したい」という用途には向いていません。

筆者
CELL関数の「color」は、一般的な背景色チェック用と考えると失敗しやすいです。

セルの色で判定したいときの基本的な考え方

セルの色で判定したい場合、まず考えるべきなのは「なぜ色がついているのか」です。色が手作業で塗られているのか、条件付き書式で自動的についているのかによって、適した方法が変わります。

色で判定するより、色がつく元になった条件をIF関数で判定する方が安全です

条件付き書式で色がついている場合

もし「80点以上なら緑」「50点未満なら赤」のように、条件付き書式で色をつけている場合は、色そのものを判定する必要はありません。

たとえば、A1の点数が80以上なら「合格」と表示したい場合は、次のように書けます。

=IF(A1>=80,"合格","要確認")

この場合、見た目の色ではなく、色をつける原因になっている条件をそのままIF関数に使います。Excelの条件付き書式は、値に基づいてセルを強調表示するための機能として案内されています。

手作業で色をつけている場合

手作業でセルに黄色や赤を塗っている場合は、IF関数だけでは判定できません。この場合は、次のような方法を検討します。

– 色の代わりに「確認済み」「要対応」などの文字を入力する
– 補助列を作って、ステータスを管理する
– VBAでセルの色を取得する
– 名前定義とGET.CELLを使う

実務では、色だけに意味を持たせる管理方法はミスが起きやすいです。あとから別の人が見たときに、黄色が何を意味するのか分からなくなることもあります。

おすすめは補助列で管理する方法

一番おすすめなのは、色ではなく補助列に状態を入力する方法です。

たとえば、A列にタスク名、B列にステータスを入力し、C列で判定します。

A列 B列 C列
資料作成 完了 OK
見積確認 要対応 確認必要

C列には次のように入力できます。

=IF(B2="完了","OK","確認必要")

この形にしておくと、色に頼らずデータとして判定できるため、並べ替え・集計・検索もしやすくなります。

筆者
色は「見やすくするため」、判定は「文字や数値」で行うと、あとから管理しやすくなります。

VBAでセルに色がついていたら判定する方法

どうしても「セルの背景色そのもの」を判定したい場合は、VBAを使う方法があります。VBAでは、セルのInteriorプロパティを使ってセル内部の書式情報を扱えます。Microsoft Learnでも、Range.Interiorは指定した範囲の内部を表すInteriorオブジェクトを返すと説明されています。

VBAで色あり・色なしを判定する例

たとえば、A1セルに色がついていたら「色あり」、色がなければ「色なし」と判定する場合、次のようなユーザー定義関数を作れます。

Function HasColor(cell As Range) As String
If cell.Interior.ColorIndex = xlColorIndexNone Then
HasColor = "色なし"
Else
HasColor = "色あり"
End If
End Function

このコードをVBAに登録すると、シート上で次のように使えます。

=HasColor(A1)

これにより、A1に塗りつぶし色があれば「色あり」、なければ「色なし」と表示できます。

特定の色だけを判定する例

黄色だけを判定したい場合は、色番号を使う方法があります。ColorIndexプロパティは、枠線・フォント・内部の色を色番号として設定または取得できるプロパティです。

たとえば、A1が黄色なら「黄色」、それ以外なら「対象外」としたい場合は、次のような関数を作れます。

Function CheckYellow(cell As Range) As String
If cell.Interior.ColorIndex = 6 Then
CheckYellow = "黄色"
Else
CheckYellow = "対象外"
End If
End Function

シートでは次のように使います。

=CheckYellow(A1)

ただし、Excelのテーマや色の指定方法によっては、想定した色番号と違う結果になる場合があります。そのため、実務で使う場合は対象のブックで色番号を確認してから運用することが大切です。

VBAを使う場合の注意点

VBAを使う場合、ファイル形式は通常の.xlsxではなく、マクロ有効ブックの.xlsmで保存する必要があります。また、社内環境によってはマクロが無効化されていることもあります。

さらに、セルの色を変えただけでは計算結果が自動更新されない場合があります。その場合は、再計算や再入力が必要になることがあります。

VBAは便利ですが、共有ファイルや社内ルールがある場合は、マクロ利用の可否を先に確認しましょう

筆者
個人用ならVBAでもよいですが、会社で共有する表ならマクロ禁止の可能性も考えておきたいですね。

名前定義やGET.CELLで色を取得する方法

VBAを直接書きたくない場合、Excelの名前定義とGET.CELLを使って色番号を取得する方法もあります。ただし、これは通常のワークシート関数としてセルに直接入力する使い方ではなく、やや裏技的な方法です。

GET.CELLとは何か

GET.CELLは、古いExcelマクロ関数の一種です。通常のセルにそのまま=GET.CELL(…)と入力して使うのではなく、名前の定義に登録して使うのが一般的です。

たとえば、名前の定義で「ColorNo」という名前を作り、参照範囲に次のような式を入れます。

=GET.CELL(63,Sheet1!A1)

その後、セルに次のように入力すると、対象セルの色番号を取得できる場合があります。

=ColorNo

ただし、設定方法を間違えると正しく動きません。また、ブックの構造や参照位置によって扱いが分かりにくいため、初心者向けとはいえません。

GET.CELLを使うメリット

GET.CELLを使うメリットは、VBAコードを本格的に書かなくても、セルの色番号を取得できる場合があることです。

色番号が取得できれば、IF関数と組み合わせて次のような判定ができます。

=IF(ColorNo=6,"黄色","対象外")

このように、色番号を数値として扱えるようにすれば、IF関数で判定できます。

GET.CELLを使うデメリット

一方で、GET.CELLは通常の関数一覧に出てくる一般的な関数ではありません。設定の難しさや、再計算の反映タイミングなどに注意が必要です。

また、Excelに詳しくない人がファイルを引き継いだ場合、「なぜこの式で色番号が出ているのか分からない」という状態になりやすいです。

そのため、長期的に使う業務ファイルでは、GET.CELLよりも補助列で状態を管理する方法や、必要に応じてVBAを明示的に使う方法の方が分かりやすいでしょう。

実務でおすすめの使い分け

セルに色がついていたらIFで判定したい場合、目的によって適した方法は変わります。大切なのは、「見た目の色を判定したい」のか、「業務上の状態を判定したい」のかを分けて考えることです。

初心者におすすめの方法

初心者におすすめなのは、色ではなく文字や数値で判定する方法です。

たとえば、ステータス列に「完了」「未完了」「要対応」と入力し、その値に応じてIF関数を使います。

=IF(B2="要対応","確認必要","問題なし")

さらに、条件付き書式を使えば、「要対応」と入力された行だけ赤くすることもできます。これなら、色は見やすさのために使い、判定は文字で行えます。

どうしても色で判定したい場合

すでに大量のセルが手作業で色分けされていて、今からステータス列を作るのが難しい場合は、VBAやGET.CELLを検討します。

ただし、業務ファイルとして使うなら、次の点を確認しておきましょう。

– マクロを使ってよい環境か
– 他の人も同じように開けるか
– 色番号の意味を説明できるか
– 色を変更したときに再計算されるか
– 将来的にメンテナンスできるか

特に会社の共有ファイルでは、作った本人しか仕組みが分からない状態になると危険です。

色判定よりも安全な設計

実務で最も安全なのは、次の流れです。

ステータス列に「完了」「要対応」などを入力する
IF関数でステータスを判定する
条件付き書式で色を自動表示する

この方法なら、データとしても見た目としても管理しやすくなります。

Excelでは「色をデータにする」のではなく、「データに応じて色をつける」設計が基本です

筆者
色を先に決めるより、ステータスや条件を先に決める方が、集計や修正に強い表になります。

まとめ

セルに色がついていたらIFで判定できるかの要点

セルに色がついていたらIFで判定できるかという疑問への答えは、通常のIF関数だけでは直接判定できないです。IF関数はセルの値や条件を比較する関数であり、背景色そのものを標準的に読み取る関数ではありません。

ただし、方法がまったくないわけではありません。VBAを使えばセルのInteriorやColorIndexを参照して、色あり・色なし、特定色かどうかを判定できます。また、名前定義とGET.CELLを使えば、色番号を取得してIF関数と組み合わせる方法もあります。

実務では補助列と条件付き書式がおすすめ

実務でおすすめなのは、色そのものを判定するのではなく、ステータス列や条件を作ってIF関数で判定する方法です。そのうえで、条件付き書式を使って自動的に色をつければ、見た目も分かりやすく、データとしても扱いやすくなります。

特に共有ファイルでは、色だけに意味を持たせると、あとから修正や集計がしにくくなります。長く使う表ほど、「色で管理」ではなく「値で管理し、色は補助的に使う」設計にするのが安全です。

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