色のついたセルをカウント・集計

表題の案件はよく相談掲示板に挙げられる問題です。
ワークシート関数には「色のついたセル」を把握するものはありません。
したがって、標準機能では「色を基準にカウント・集計することは出来ません」
(CELL関数に"color"と言う引数がありますが、 これは「負の数値の数値書式が色つきに設定されているかどうか」を判定するもので、用途が異なります。)
セルの背景色を判定するには関数以外の方法を用いることとなります。 次の二つの方法が考えられます。 このページではこのうち「4.0マクロ関数」を使用した方法をご紹介します。
  1. 色のついたセルを判別する
  2. 色のついたセルをカウント・集計

  1. 色のついたセルを判別する
  2. ◆4.0マクロ関数

    通常の関数ではセルに色がついているかどうか、判定ができないことはすでに述べました。
    そこで「4.0マクロ関数」というものを利用します。
    「4.0マクロ関数」にはセルやワークブックの情報を把握する関数が複数用意されています。
    「4.0マクロ関数」には次のような特徴があります。
    ワークシートに直接入力しても利用することは出来ませんが、 これに名前をつけることで間接的に利用することができます。
    セルやフォントの「色番号」を求めるには4.0マクロ関数の「GET.CELL関数」を使用します。

    ◆4.0マクロ関数に名前をつける

    「A列のセル背景色の色番号」を求める「CELLCOLOR」という名前付き関数の設定手順を以下に紹介します。
    次のようにA列のリストのうちいくつか色のついたセルがあり、 A列以外のセルへ色番号を求める場合を想定します。
    AB CD
    1100
    288
    395
    4125
    任意の列の一行目のセルのいずれかを選択した状態で次の操作を行います。
    1 メニューの 挿入(I)名前(N) 定義(D)で「名前の定義」ダイアログボックスを開く。
    2 「名前」テキストボックスにCELLCOLOR(この名前は任意)
    「参照範囲」テキストボックスに=GET.CELL(63,!$A1)+NOW( )*0
    追加(A)OK
    =GET.CELL(63,!$A1)+NOW( )*0の解説
    GET.CELL(63,!$A1)
    「63」はセルの背景色を検査する場合のGET.CELL関数の引数です。
    「!$A1」は検査を行う対象セルアドレスを指定します。
    +NOW( )*0
    4.0マクロ関数単体で使用した場合、入力時点での計算しか行いません。 ワークシートの再計算時には再計算の対象になりません。 そこで再計算の対象となる関数NOWを組み合わせることで再計算を有効にします。

    ◆セルの色番号を求める

    B列にA列のセル背景色の色番号のリストを作成します。
    AB CD
    1100=CELLCOLOR
    288
    395
    4125
    B1に「=CELLCOLOR」と入力しコピー、B列に必要範囲へ貼り付け。
    B列の各セルに同じ行のA列のセル背景色の色番号が表示されます。
    ただし、ウィンドウズの設定がデフォルトのままの場合、見かけの色は同じなので注意が必要です。
    (「色なし」は「0」、「白」は「2」)
    結果は下記の様になります。
    AB CD
    11008
    288 0
    395 0
    4125 8
    セルの背景色を基準にカウントや集計を行うには、背景色の色番号をもとめた列を基準として行います。

    ▲PAGETOP

  3. 色のついたセルをカウント・集計
  4. セルの背景色を表す数値をシート上に求めることが出来れば、 ワークシート関数でカウントや集計を容易に行うことが出来ます。
    以下に良く使いそうなカウントや集計のパターンの例をご紹介します。

    ◆色のついたセルをカウントする

    下記表B列には◆4.0マクロ関数に名前をつけるで設定した =CELLCOLORが入力されています。B列に表示されているのは同じ行のA列の背景色番号です。 C1へA列の色つきのセルをカウントする場合、C1セルへ次の数式を入力します。
    AB CD
    11008=COUNTIF(B:B,">0") 
    288 3
    395 0
    4125 8
    A列にセル背景色が設定されたセルは、B列に「0」より大きい数値が返っています。
    =COUNTIF(B:B,">0")B列の「0」より大きい数値のあるセルの数を計算します。 上記例ではC1セルに「3」が返ります。
    ただし、C1セルの背景色を変更しただけではD1の数式は再計算されません。
    C1のセルの色を書式設定で変更したあと、 F9 (再計算)キーを押すようにしてください。
    関数ヘルプ
    COUNTIF関数(HINT)

    ◆特定の色のセルをカウントする

    下記表B列には◆4.0マクロ関数に名前をつけるで設定した =CELLCOLORが入力されています。B列に表示されているのは同じ行のA列の背景色番号です。 C1へA列の背景色が「ライトブルー」であるセルをカウントする場合、C1セルへ次の数式を入力します。
    AB CD
    11008=COUNTIF(B:B,B1) 
    288 3
    395 0
    4125 8
    A列にセル背景色が設定されたセルは、B列に「0」より大きい数値が返っています。
    =COUNTIF(B:B,B1)でA列の背景色に「ライトブルー」が設定されたセル、 即ち、B列の「ライトブルー」の色番号の返っているセルの数を計算します。 つまり、カウントしたい色のA列のセルと同じ行のB列のセルをCOUNTIF関数の検索条件とします。
    色番号が明らかな場合は直接色番号を指定して=COUNTIF(B:B,8)としてもかまいません。
    上記例ではC1セルに「2」が返ります。
    ただし、C1セルの背景色を変更しただけではD1の数式は再計算されません。
    C1のセルの色を書式設定で変更したあと、 F9 (再計算)キーを押すようにしてください。
    関数ヘルプ
    COUNTIF関数(HINT)

    ◆特定の色のセルを集計する

    下記表B列には◆4.0マクロ関数に名前をつけるで設定した =CELLCOLORが入力されています。B列に表示されているのは同じ行のA列の背景色番号です。 C1へA列の背景色が「ライトブルー」であるセルを集計する場合、C1セルへ次の数式を入力します。
    AB CD
    11008=SUMIF(B:B,B1,A:A) 
    288 3
    395 0
    4125 8
    A列にセル背景色が設定されたセルは、B列に「0」より大きい数値が返っています。
    =SUMIF(B:B,B1,A:A)でA列の背景色に「ライトブルー」が設定されたセル、 即ち、B列の「ライトブルー」の色番号の返っているセルと同じ行のA列のセルの数値を合計します。 つまり、集計したい色のA列のセルと同じ行のB列のセルをSUMIF関数の検索条件とします。
    色番号が明らかな場合は直接色番号を指定して=SUMIF(B:B,8,A:A)としてもかまいません。
    上記例ではC1セルに「225」が返ります。
    ただし、C1セルの背景色を変更しただけではD1の数式は再計算されません。
    C1のセルの色を書式設定で変更したあと、 F9 (再計算)キーを押すようにしてください。
    関数ヘルプ
    SUMIF関数(HINT)

    ▲PAGETOP


≪前のページへ    困ったときのお部屋目次へ   次のページへ≫

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送