EXCELちょっと便利テクニック

Home What's
New
Site
Concept
生産性向上
基本テクニック
トラブル回避
テクニック
生産性向上
リンク
personal.xls
強化講座
生産性向上
ツール
Site Map Coffee
Break
Guest
Book
地球風
画像館
Q&A Salon
EXCELの質問はこちらへ

 

12/23/2002 -
21-2.複数の条件を指定した各種計算を行う
 
21および21-1のページで、配列数式という機能がだいたいどのようなものか分かって(分かりかけて)来たという前提で、実例を紹介していこうと思います。
 

ここでは、右の表のようなデータをサンプルとして用います。
 


 
 
この表から、色々な条件で件数や平均値・最大値を求めてみます。

結果を表示させたい場所(例えばセルD13)に、以下の式を入力します。

(配列数式の場合は入力する式を で囲って記述していますが、 は実際には入力する必要は無く、式の入力の最後にShiftキーCtrlキー両方を「押しながら」Enterキーを押すということに注意してください)
   
配列数式を使わない方法
配列数式を使う方法
(a)
東京都在住の人数 最初に、住所が東京都の人数の求め方です。この場合は、配列数式を使わないほうが簡単ですね。
=COUNTIF(C2:C11,"東京都*") {=SUM(IF(LEFT(C2:C11,3)="東京都",1,0))}
  東京都在住の男性の人数 次に、条件を1つ加えて、東京都の男性の人数を求めます。配列数式の方は、1つのIF文で * を使って論理積(AND)の結果を条件とするやり方と、IF文を2つネストするやり方があります。
(b1)
=SUMPRODUCT((LEFT(C2:C11,3)="東京都")*(D2:D11="男")*1) {=SUM(IF((LEFT(C2:C11,3)="東京都")*(D2:D11="男"),1,0))}
(b2)
{=SUM(IF(LEFT(C2:C11,3)="東京都",IF(D2:D11="男",1,0),0))}
(c)
千葉県または神奈川県の
在住人数
(a)の応用で、住所が千葉県あるいは神奈川県の人数の求め方です。論理和(OR)条件となるので、条件の結果を + で足して判定しています。
=SUMPRODUCT(((LEFT(C2:C11,3)="千葉県")+
(LEFT(C2:C11,4)="神奈川県"))*1)
{=SUM(IF((LEFT(C2:C11,3)="千葉県")+
(LEFT(C2:C11,4)="神奈川県"),1,0))}
(d)
30歳以上の人の身長の平均 今度は、数値の条件です。配列数式を使う場合は素直にAVERAGE関数に条件を指定すれば良いのですが、配列数式を使わない場合は30歳以上の人の合計を30歳以上の人の人数で割って平均を求めます。
=SUMIF(E2:E11,">=30",F2:F11)/COUNTIF(E2:E11,">=30") {=AVERAGE(IF(E2:E11>=30,F2:F11))}
  20歳台の人の身長の平均 (d)をちょっとアレンジして20歳台とした場合、ちょっと複雑になります。
(e1)
=(SUMIF(E2:E11,">=20",F2:F11)-SUMIF(E2:E11,">=30",F2:F11))/
(COUNTIF(E2:E11,">=20")-COUNTIF(E2:E11,">=30"))
{=AVERAGE(IF((E2:E11>=20)*(E2:E11<30),F2:F11))}
(e2)
=SUMPRODUCT((E2:E11>=20)*(E2:E11<30)*F2:F11)/
(COUNTIF(E2:E11,">=20")-COUNTIF(E2:E11,"<30"))
{=AVERAGE(IF(E2:E11>=20,IF(E2:E11<30,F2:F11)))}
(f)
20歳台の男性の身長の平均 ここから下の例は、配列数式を使わないと一発では求められないと思います。
{=SUM(IF((D2:D11="男")*(E2:E11>=20)*(E2:E11<=29),F2:F11,0))/ SUM(IF((D2:D11="男")*(E2:E11>=20)*(E2:E11<=29),1,0))}
(g)
男性の体重の最高値
男ではない場合、 D2:D11="男"の部分は偽(False、つまり0)になり、男の場合は真(True、つまり1)になるので、それと体重を掛けた結果の中から最大値を求めます。
{=MAX((D2:D11="男")*G2:G11)}
(h)
身長170cm未満の人の
体重の最高値
数値の比較条件の場合は、このようになります。
{=MAX((F2:F11<170)*G2:G11)}
(i)
女性の体重の最低値
最低値の場合、IFの条件部分が偽(False、つまり0)だとその0が最低になってしまうので、ここでは条件がFalseの場合は999として最低を求めています。
{=MIN(IF(D2:D11="女",G2:G11,999))}
   
  他にも実例が思いついたら追加していきます。。。
   

 

↑目次に戻る
モーグ
Google
  Web excel7.com