- ベストアンサー
関数について
エクセルの関数で たとえば セルの塗りつぶしが赤のものをカウントするというようなことができる関数はありますか? ありましたら教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
マクロ関数を使った方法で・・・。 ・・・Exel2003の場合・・・ 「挿入」→「名前」→「定義」の順で進めて 名前ボックス内「参照範囲」枠内に「=get.cell(63,Sheet1!(A1)」を入力 「名前」に適当な名前を入力(添付画像の場合は「カラー」と入力しました) 空いてる列の1行目に「=カラー」と入力してセルA1~A10までをオートフィルコピー(色番号が返されます) countif関数を使い答えを返したいセルをアクティブに・・・ 「=COUNTIF($B$1:$B$10,3)」の式を入れます (赤の塗りつぶしの個数を返します) 例えば、塗りつぶしをしたセルが数値として、そのセルの合計値を返したい場合はsumjf関数で・・・ 「=SUMIF($B$1:$B$10,3,$A$1:$A$10)の式を入れると合計値を返してきます ・・・Excel2007&2010の場合・・・ 「数式」タブ→「定義された名前」グループ内の「名前の管理」→「名前の管理」画面から「新規作成」→あとの入力方法は2003と同様に。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
>セルの塗りつぶした情報は、「セルの値」ではないのだ。書式とか言われるもの。この両者の区別が付かない初心者がこういう質問を発する。 一方、関数は「セルの値」を使って、加工して、「セルの値」という形で返すもの。, いまのところ、エクセルがセルの値だけを関数が扱うという線は分けてある。(将来バージョンではどうなるか) だから、ほうほうは (1)VBAでやる (2)ユーザー定義関数を作って関数の形でコードにデモする。 Function iro(a) If a.Interior.ColorIndex = -4142 Then iro = "" Else iro = a.Interior.ColorIndex End If End Function のようなもの。 セルの色はセルの「パターン」でせっていしたもの。 別の空き列に=iro(A2)のように入れて、数字コードを出して、その数をCOUNTIFで数える (4)色を着けた基準(=ルール)に立ち返って、その条件でCOUNTIFやCOUNTIFS関数を使う。 (注意)質問にはエクセルバージョンを書いておくこと。COUNTIFSは2007以後の関数。 しかし人間の総合的判断や、好みで色をつけたものは、ルールといってもはっきりしないよね。だから(4)の場合は出来ない。
- edomin7777
- ベストアンサー率40% (711/1750)
こういう質問がでると、VBA等を使用してセルの色を判定しようとする回答が付く。 でも、「なぜそのセルを赤くしたか」という基準が絶対にあるはずである。 その「基準」を関数化したほうが、絶対簡単。(だと思う。) なので、「何となく」赤くしたのでなかったら、その条件を示すべき。