• ベストアンサー

【Excel】 セルの色での判断はできますか?

使用環境:Office2003 条件付書式を使用して、セルの値がxxならばセルを着色する・フォントを変える、というのは可能ですが、 逆に セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する ということは可能でしょうか? ※VBAを使わなければそれにこしたことはないですが、  必要ならばコーディングも教えてください よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

過去の質問を検索していただくと、たくさんの事例がありますが、結論から言うとVBAを使用しないとセルの色は取得できません >セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する VBAを使用すればもちろんできますが、これは「例えば」の質問であって、このコードを書いても意味はないのでは? ですから汎用的に使えるユーザ定義関数にしました。以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。 ワークシート画面に戻って、適当なセルに =CellColor(A1) と入力してみて下さい。A1セルの色番号が表示されます。(背景色なしの場合は0が返ります) この戻り値判定して、関数などでセルに値をセットすればよいでしょう Function CellColor(ByVal rng As Range) With rng.Cells(1, 1).Interior If .ColorIndex = xlNone Then CellColor = 0 Else CellColor = .ColorIndex End If End With End Function ただしセルの背景色を後から変えても、ユーザ定義関数の戻り値は自動的には変わりません。式を入力した後で背景色を変更した場合は  ALT+Ctlr+F9 で強制再計算させる必要があります。

motsu2006
質問者

お礼

自宅にはOffice2003の環境がないため、コメントが遅くなりましたことまずお詫び申し上げます。 確かに、もう少し具体的な質問をしないとサンプルコードも書けないかもしれませんね。 しかし、zap35さんのご回答、参考になりました。 強制再計算はボタンクリックに変更し、ほぼ目的にあった動作をさせることができました。 ありがとうございました!

すると、全ての回答が全文表示されます。

その他の回答 (3)

noname#79209
noname#79209
回答No.4

何の理由もなしに色をつけているとは思えませんので、 その理由付けになっている条件を取得できないでしょうか。 また、そのように仕組むべきです。 ご質問の内容だと、 「セルの色が赤ならば、隣のセルに1を代入する」ではなく、 「隣のセルが1なら、セルの色を赤にする」というアプローチに変更します。 エクセルの関数は他のセルをどうこうする機能はありません。 「隣のセルに1を代入する」という考え方ではなく、「他のセルの内容によって『1』になるような数式をセットしておく」という考え方です。

motsu2006
質問者

お礼

自宅にはOffice2003の環境がないため、コメントが遅くなりましたことまずお詫び申し上げます。 おっしゃることはわかります。 ただ、今回は既にある特定のセルが着色されたデータをもらい、 それに対して集計を行うのが任務だったので。

すると、全ての回答が全文表示されます。
  • WWolf
  • ベストアンサー率26% (51/192)
回答No.3

参考にして下さい http://okwave.jp/qa3233066.html

motsu2006
質問者

お礼

自宅にはOffice2003の環境がないため、コメントが遅くなりましたことまずお詫び申し上げます。 ありがとうございます。こういうやり方もあるんですね。 しかし、ちょっと私にはソースが高度かな?って感じですが、 今後のためにも勉強になります。

すると、全ての回答が全文表示されます。
回答No.1

私も先ほど同じ問題でハマりました。 最初のセルをA1、隣のセルをB1として、 ・A1: A1の値が0より大きければA1の色を赤にする(条件付き書式) ・B1: A1の値が0より大きければB1に1を表示する ・A1に1を入れる 私はこの方法で妥協することにしました。

motsu2006
質問者

補足

自宅にはOffice2003の環境がないため、コメントが遅くなりましたことまずお詫び申し上げます。 で、ご回答いただいたないようですが、 私と目的が異なっているように思えるのですが、それは私の理解力が不足しているだけでしょうか? すみませんが、追記いただけると助かります。

すると、全ての回答が全文表示されます。

関連するQ&A