8/22/2015

Excel。MONTH。誕生月の方を抽出したリストを作りたいけどどうしたらいい?というご質問


Excel。誕生月の方を抽出したリストを作りたいけどどうしたらいい?というご質問

MONTH・ROW・COUNT・SMALL・INDEX関数


登録されている一覧から誕生月ごとに何人いるのか?という算出方法をご紹介しましたが、
今回は、その該当月の方を抽出したいのだけど、どうしたらいい?と、ご質問がありましたので、
今回は、それを紹介していきます。

難しそうには感じませんが、結構ややこしくて、面倒なんですね。
例えば10月の方を抽出したい場合、

考え方として、IF関数を使ってみたら、

E4には、

=IF(MONTH(C4)=$E$1,B4,"")

という数式が設定されています。
この数式では、E列に10月生まれの方の氏名が表示されるだけですね。

これでは、イマイチですね。

次にテーブルにしてみたら、どうでしょうか?

テーブルに変換して、月を10月で抽出してみます。

なお、このD4には、

=MONTH(C4)

という月を算出する関数が設定されています。

これで、10月の方が抽出されましたので、OKではありますが、
元の一覧が消えてしまっていまして、リクエストとして、元の表は見えるようにしてほしいという、
欲張りなものでした。

ということで、今回は、関数を使って抽出していくことにしましょう。

完成はこんな感じです。

では、まずは、抽出から作成していきましょう。

この抽出は、最終的にこの列を使用して、INDEX関数を使って、該当の方を抽出させていきます。

それでは、D4をクリックして、IF関数ダイアログボックスを表示しましょう。

論理式には、MONTH(C4)=$G$1 と入力します。

これは、誕生月が10月と合致するかどうか?とします。

真の場合には、ROW()-3 と入力します。
このROW関数は、その行番号を算出してくれます。
今回の一覧表は、3行目に見出しがあるので、
篠崎さんは1行目(1レコード)にならないといけませんので、-3(マイナス3)する必要があります。

偽の場合には、”” 空白 と入力します。

OKボタンをクリックして、オートフィルハンドルで数式をコピーしましょう。

続いてこの抽出で表示された数値だけを別表に集めていきます。

ここで登場するのはSMALL関数です。

SMALL関数は、データの中から指定された順に小さい数値をもってきます。

それでは、H4をクリックして、IF関数ダイアログボックスを表示します。

論理式には、抽出された件数よりも大きければ空白を入力するための数式が入りますので、COUNT($D$4:$D$21)<F4 と入力します。

真の場合は、”” 空白を入力します。

偽の場合は、SMALL関数を挿入しますので、
SMALL関数ダイアログボックスをネストしていきます。

配列には、抽出のD列。$D$4:$D$21 と入力します。

順位ですが、これは、丁度NoのF列に1~連番ではいっていますので、
これを使いますので、F4 と入力します。

OKボタンをクリックして、オートフィルハンドルで数式をコピーします。

H列に数値が集められましたね。SMALL関数って結構使える関数なんですよ。
そして、いよいよ、氏名を抽出させます。
IF関数ダイアログボックスを表示します。

論理式には、H4=”” 先程のH列が空白なら空白そうでなければINDEX関数をネストします。

真の場合は、”” 空白を入力します。
偽の場合には、INDEX関数をネストしますので、INDEX関数ダイアログボックスを表しましょう。

その際に、引数の選択ダイアログボックスが表示されてきますので、
【配列,行番号,列番号】を選択しましょう。

配列には、$B$4:$B$21 と入力します。氏名のデータですね。
行番号は、H4 と入力します。この数値のデータをもってきます。
列番号は、0 と入力します。省略もできます。
あとは、OKボタンをクリックして、数式をコピーしましょう。

これで完成ですね。

しかし、H列など作業だけで算出させたのが見えていると見栄えが良くないので、
次回は、見栄えを良くする方法アレコレをご紹介していきます。