• ベストアンサー

エクセルの数式について

すいません。複数の条件付に該当する件数を表示させたいのですが、どうすればよろしいでしょうか。 以前、Aセルが"男"かつBセルが"本人"である件数を表示させたいと質問したところ =SUMPRODUCT(((A1:A7)="男")*((B1:B7)="本人"))という配列数式を教えていただきました。今回はさらに、Cセルに年齢の欄を設けて25歳以上40歳未満であるという条件も附加したいのです。いろいろ私なりに試行錯誤してみたのですが上手くいかずに困っております。申し訳ありませんがよろしくお願いします。 今回も、できれば作業セルをつくらずに直接件数を表示させたいと思っております。 Aセル  Bセル  Cセル 性別   続柄  年齢  男   本人   30  男   子供   10  女   妻     25  男   叔父   45  女   本人   50  男   夫     20  男   本人   35

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

  • ベストアンサー
  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.1

「25歳以上」と「40歳未満」という条件をつけたすだけでは? =SUMPRODUCT(((A1:A7)="男")*((B1:B7)="本人")*((C1:C7)>=25)*((C1:C7)<40) では?

Lemmings
質問者

お礼

あれれ、nihonjinnさんの教えていただいた数式をコピペさせて頂いたのですが、上手くいきました。でも、私もその方法は試したんですけど、数式エラーが出ちゃって。でもでも、上手くいってよかったぁ。ありがとうございました。また、今後もよろしくお願いします。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

配列数式の理解とVBAの理解とどちらが易しいでしょうか。下記の場合に限定して、やはり配列数式の方が判りやすいでしょうか。 Sub test02() n = 0 d = Range("a1").CurrentRegion.Rows.Count For i = 1 To d If Cells(i, "A") = "男" Then  If Cells(i, "B") = "本人" Then   If Cells(i, "C") < 40 And Cells(i, "C") >= 25   Then   n = n + 1   End If  End If End If Next i Cells(i+1, "A") = n End Sub (データ)A1:C9に 男 本人 30 男 子供 10 女 妻 25 男 叔父 45 女 本人 50 男 夫 20 男 本人 35 男 本人 25 男 本人 40 (結果) A10に3となります。

Lemmings
質問者

お礼

ご回答頂きましてありがとうございます。社員名簿の様なものを作っておりまして、いろいろな情報が瞬時にわかるようにと思い、今回の様な質問をし皆様方のご指導を受けております。まだ、Excelの知識があまりなく配列数式もVBAも同じくらい理解に苦しんでおりますが、これを機にimogasiさんのつくって頂いたVBAで慣れていこうと思います。まだ、名簿の方は着手したばかりですのでまた、お聞きすると思いますがよろしくお願いします。

  • stones
  • ベストアンサー率40% (88/218)
回答No.4

A2:C8に表があるとすると、 {=SUM(IF($A$2:$A$8="男",IF($B$2:$B$8="本人",IF($C$2:$C$8>=25,IF($C$2:$C$8<40,1,0),0),0),0))} 配列でやるとこんな感じです。因みに、一番外側のカッコをつけるために セルに数式を入力後Ctrl+Shift+Enterとしてください。 この手の配列の場合は、あまり考えることなく、ツール(T)-ウィザード(W) の条件付合計式を使うと便利です。 もし、このメニューがない場合はツール(T)-アドイン(I)で条件付き合計式 ウィザードにチェックをいれてください。

参考URL:
http://pc21.nikkeibp.co.jp/pc21/pc_10/hr_top.htm
Lemmings
質問者

お礼

ご回答頂きましてありがとうございました。こういう風な配列数式でも求められるのですね。勉強になりました。しかも、ご親切に配列数式に関するURLもつけていただきありがとうございます!。今回はnihonjinnさんの数式を使わせて頂こうと思いますが、今後もぜひよろしくお願いします。

  • Mozisan
  • ベストアンサー率43% (130/299)
回答No.3

オートフィルタと SUBTOTAL() の組み合わせはいかがでしょうか? SUBTOTAL() は非表示セルを無視する性質があります。 そこで、SUBTOTAL(3,Axx:Azz)の式を作ります。 そのままだと、全件数表示しますが、オートフィルタで条件にマッチした行だけ表示させると、表示されている件数を表示してくれるはずです。 いちいち条件を設定するわずらわしさはありますが、複数の条件にマッチする件数を、比較的直感的操作で求めることができると思います。 オートフィルタは、「データ」-「フィルタ」-「オートフィルタ」とクリックします。セルの左の▼ボタンをクリックして条件を選択します。 Cセルの場合は、「オプション」で「25以上」と「39以下」を指定します。

Lemmings
質問者

お礼

ご回答頂きましてありがとうございました。オートフィルタと数式の組み合わせでもできるのですねぇ。勉強になりました。視覚的・直感的操作な感覚でできるので、条件をその都度選択する時に使えそうです。今回は条件が限定されていますので、nihonjinnさんの使わせて頂こうと思います。大変ありがとうございました。また、よろしくお願いします。

  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.2

すいません。括弧が一つ足りませんでした。 =SUMPRODUCT(((A1:A7)="男")*((B1:B7)="本人")*((C1:C7)>=25)*((C1:C7)<40)) です。

関連するQ&A