実のところ
COUNTIFで複数範囲指定はできません。看板に偽りアリといわれそうですが タイトルはあくまで検索用です^^; COUNTIFにはまり込むと抜け出せなくなります。範囲を複数指定できる関数は RANKや LARGE/SMALLなど限られています。 COUNTIFでやろうと思ったら 4つの範囲それぞれに式を作って足すことになります。そんな面倒で不格好な方法を使わなくても FREQUENCY関数を使うとすんなり済みます。
■E12セル
=INDEX(FREQUENCY((C$3:C$9,F$3:F$9,I$3:I$9,L$3:L$9),B12:C12),2)
これでおしまい。今回は複数条件だったので
INDEX関数を入れましたが
例えば「40歳未満の数」を知りたい場合
■E12セル
=FREQUENCY((C3:C9,F3:F9,I3:I9,L3:L9),39)
だけで求められます。
FREQUENCY関数の結果は必ず配列になりますが 普通に式を確定すると配列の先頭の値が返ります。条件が複数の時は INDEXで配列から必要な区間を指定してもいいのですが 第2引数の区間配列を変えてやれば そのままでも結果を返すことができます。例えば「40歳以上50歳未満」でも
■E12セル
=FREQUENCY((C3:C9,F3:F9,I3:I9,L3:L9),{50,39})
こんなもんです。
皆大好き SUMPRODUCT。今回の場合も当然使えます。
■E12セル
=SUMPRODUCT((C$3:L$9>=B12)*(C$3:L$9<C12)*(C$2:L$2="年齢")*(C$3:L$9<>""))
横着するならこんな感じです。汎用性は高いですが FREQUENCYと違って 指定する範囲の形が違うと計算できません。また今回の場合 件数計算では空白を省く処理が別途必要です。式を短くするだけなら他にも方法はありますが
この手の方法はとりあえずここまでとします。
ついでに合計を計算する場合。
残念ながら件数計算には便利な FREQUENCY関数も 合計計算には使えません。IF関数を入れて配列計算にすれば別ですが それじゃ使う意味があまりありませんしね。
やっぱり便利な
SUMPRODUCT。
■E12セル
=SUMPRODUCT((C$3:K$9>=B12)*(C$3:K$9<C12),D$3:L$9)
今回は「金額」列の右隣の列に何も入っていないのでこれでいいでしょう。 Excel2007の場合 SUMIFSでもいいです。C15セルを「100」などの大きな数値に変更して
■E12セル
=SUMIFS(D$3:L$9,C$3:K$9,">
=
"&B12,C$3:K$9,"<"&C12)
やっぱりデータは1列に直してから処理した方が
一般機能ではうまくいきます。
→参考ファイル(050.xls)