スティーブは、セルの色に基づいて(ワークシート関数を使用して)IFステートメントを作成したいと考えています。たとえば、A1に緑色の塗りつぶしがある場合は「go」という単語を返し、赤色の塗りつぶしがある場合は「stop」という単語を返し、他の色の場合は「どちらでもない」という単語を返します。 。スティーブは、これを行うためにマクロを使用しないことを好みます。

残念ながら、何らかの形でマクロを使用せずにこのタスクを適切に実行する方法はありません。最も近い非マクロソリューションは、次の方法で色を決定する名前を作成することです。

。セルA1を選択します。

。 [挿入] | [挿入]をクリックします名前|定義します。 Excelに[名前の定義]ダイアログボックスが表示されます。

。 「mycolor」などの名前を使用します(引用符は含みません)。

。 [参照先]ボックスに、次のように1行で入力します。

。 [OK]をクリックします。

この名前を定義すると、任意のセルに次のように入力できます。

=mycolor

その結果、この数式を配置したセルの色に基づいてテキストが表示されます。もちろん、このアプローチの欠点は、数式が配置されているセル以外のセルを参照できないことです。

したがって、解決策は、(定義上)マクロであるユーザー定義関数を使用することです。マクロは、セルが塗りつぶされている色をチェックしてから、値を返すことができます。たとえば、次の例では、ターゲットセルの色に基づいて、3つの単語のいずれかが返されます。

Function CheckColor1(range)

If range.Interior.Color = RGB(256, 0, 0) Then         CheckColor1 = "Stop"

ElseIf range.Interior.Color = RGB(0, 256, 0) Then         CheckColor1 = "Go"

Else         CheckColor1 = "Neither"

End If End Function

このマクロは、セル内の色のRGB値を評価し、それらの値に基づいて文字列を返します。セル内の関数は次のように使用できます:

=CheckColor1(B5)

RGBカラーの代わりにインデックスカラーをチェックしたい場合は、次のバリエーションが機能します:

Function CheckColor2(range)

If range.Interior.ColorIndex = 3 Then         CheckColor2 = "Stop"

ElseIf range.Interior.ColorIndex = 14 Then         CheckColor2 = "Go"

Else         CheckColor2 = "Neither"

End If End Function

RGBアプローチを使用しているか、カラーインデックスアプローチを使用しているかにかかわらず、マクロで使用されている値が、テストしているセルの色に使用されている実際の値を反映していることを確認する必要があります。つまり、Excelでは緑と赤のさまざまな色合いを使用できるため、マクロで使用されるRGB値とカラーインデックス値が、セルの色合いで使用されるものと一致することを確認する必要があります。

これを行う1つの方法は、カラーインデックス値を返すだけの非常に単純なマクロを使用することです。

Function GetFillColor(Rng As Range) As Long     GetFillColor = Rng.Interior.ColorIndex End Function

これで、ワークシートで次を使用できます。

=GetFillColor(B5)

その結果、セルB5のカラーインデックス値が表示されます。セルB5が予想される色(赤または緑)の1つを使用してフォーマットされていると仮定すると、インデックス値を以前のマクロにプラグインして、目的の結果を得ることができます。ただし、そのステップをスキップして、GetFillColorによって返される値に依存して、次のようにIF式をまとめることができます。

=IF(GetFillColor(B5)=14,"Go", IF(GetFillColor(B5)=3,"Stop", "Neither"))

これらの関数(RGBカラー値またはカラーインデックス値のどちらを参照する場合でも)は、セルの明示的なフォーマットを検査することに注意してください。条件付き書式で適用されるような暗黙的な書式は考慮されません。

色の操作に関するその他の優れたアイデア、数式、および関数については、ChipPearsonのWebサイトの次のページを参照してください。

http://www.cpearson.com/excel/colors.aspx

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(10779)は、Microsoft Excel 97、2000、2002、および2003に適用されます。

Excel(Excel 2007以降)のリボンインターフェイスに関するこのヒントのバージョンは、次の場所にあります: