【エクセル】ジェンダーレスな世の中だけど、男女別名簿は作りたい【教育】

名簿を作ろう

最近、うちの自治体でも男女混合名簿になった。

世の中の潮流からすると、ようやく感があるけど、まぁなった。

 

吉野と言えば、ジェンダーに疎いのでこんな始末。

 

混合名簿は構わないが、

保健関係とか赤白振り分けとかの関係もあるので、男女別の名簿も欲しい

 

なので今回は、

混合名簿に男女の属性をつけておくだけで男女別名簿が作れるようにする。

 

サンプル名簿

今回のサンプル名簿はこんな感じ。

f:id:tohruyoshino:20200321170328p:plain

 

左に番号があって、なんか名前が並んでいて、それから男女が振られている。

名前のところは、普通五十音順なんだろうけど、

今回は思いついた順番に並べているので、そこはご容赦を。

 

新しいナンバリングをする

とりあえず思いついた順でやってみる。

今は男女混合なので、各自に通し番号が付いているが

これに「男の1番」「女の1番」みたいな感じの番号が付けばいいはず

 

ということで、番号をつけてみた。

f:id:tohruyoshino:20200321171353p:plain

 

COUNTIF関数は「範囲内で検索条件に合うものを数える」という関数。

 

フランキーの行の場合、「=COUNTIF($C$2:C9,C9)」だが、

「C2からC9までの中でC9(男)を数えて」という命令になるので、

フランキーまでの「男」を数えてくれる

 

画像だと見えないが、フランキーは6番目になっているので

フランキーより前には5人の男がいる。

 

$C$2を固定しておくことで、オートフィルをかけた時も

一番上から自分までという範囲設定ができる

 

コニスの場合はこんな感じ

f:id:tohruyoshino:20200321172125p:plain

 

男女とナンバリングをくっつける

男女別のナンバリングができたが、これをそのまま参照すると

「1番」が2人になっていまう。

なので「男1」「女1」と区別をする

 

これは結構簡単でこんな感じにする。

f:id:tohruyoshino:20200321172519p:plain

 

ウソップの部分の場合、「=C5&D5」とすると、

「男(C5)」と「3(D5)」がくっついた「男3」という文字列が出せる。

文字列を足すには基本的に「&」でつないであげてばいい

 

応用編

今回はD列とE列で分けて、新しいナンバリングをしたが、

1回でもE列のような表示はできる

 

f:id:tohruyoshino:20200321173309p:plain

 

D列にはもともとCOUNTIF関数が入っているので、

「=C6&D6」のD6の部分にCOUNTIF関数を代入する感じ

 

折角なので、こちらのスマートな方を残して次へ行く。

(以降、D列とE列を削除するので、F列がD列に来ます。)

 

伝家の宝刀「vlookup」封じ

ここまで行けば後はvlookup関数で行けると思いきや、

検索したい文字列は検索値の左側にあるので、vlookupが使えない

 

vlookupは範囲の一番左の列からを参照するので、

この場合「ルフィ」と入力して「男1」を自動で出るシステムになってしまう。それは逆やん。

f:id:tohruyoshino:20200321175133p:plain


打開案1:「男1」を名前の左へ持ってくる

要は「男1」とかの列が名前の左にあればいいので、

そもそも名前の左に「男1」列を作る

f:id:tohruyoshino:20200321175613p:plain

 

ハイ。簡単。後はVlookup関数で行ける。

 

そもそも名簿エクセルって毎年コピペして使うケースが多いので、

性別列の右に入れておくと、コピペで消される恐れがあるんだよね

そういう意味でも、こちらの方法はとても分かりやすく、合理的。

 

打開案2:Match関数とIndex関数を組み合わせる

Match関数とIndex関数を組み合わせると、

Vlookup関数と同じ働きをすることができる。

しかも検索列がどこでも良いというVlookup関数の上位互換とも言える。

 

具体的には「=INDEX(検索範囲,MATCH(検索範囲,検索値))」という入れ子構造になる。

分かりにくいので、少し細かく解説していく。

 

まずINDEX関数は「=INDEX(検索範囲 , 番号)」という形になっており

検索範囲の中で上から何番目の文字列を教えて」という関数だ。

f:id:tohruyoshino:20200321181320p:plain

F2には、F3に示されたような関数が入っている。

「=INDEX(C2:C21,3)」なので、

「C2からC21の範囲で、上から3番目を教えて」という形になる。

上から3番目はナミなので、ナミが表示される。

 

後は「ナミ」は「女1」なので、

「”女1”は3番目だよ」と数字を教えてくれる関数が必要になる。

それがMatch関数

 

Match関数は「=MATCH(検索値 , 検索範囲)」という形になっており、

「検索値は、検索範囲の何番目だよ」と教えてくれる

 

なので「=MATCH(E4,B2:B21,0)」と入れると、

「E4の文字列は、B2からB21の中で3番目にあるよ」と返してくれる。

表示上は「3」とだけ出てくる。

 

因みにMatch関数の最後の「0」は、

検索文字列が元の文字列と完全に一致しているかの判定をする。

まぁ0で良いんじゃないかな。

 

組み合わせると、こんな感じ。

f:id:tohruyoshino:20200321182714p:plain

 

F2のルフィの中にはF3のような関数が入っている。

実際には、こんな感じ。「=INDEX(C2:C21,MATCH(E2,B2:B21,0))

 

具体的に見ていくと、

【E2(男1)はB2からB21の中で1番目で】、

 C2からC21で【1番目】は”ルフィ”だよ」となっている。

 

とりあえず、「男1」から「ルフィ」などを引っ張ってくる方法はできた。

 

男女別名簿を格好良く作る

じゃあ実際に名簿を作ってみる。

こんな感じで「男1」と書いて名簿だと楽だが、ちょっとカッコ悪い

f:id:tohruyoshino:20200321183832p:plain

 

できれば、こんな感じで番号だけで行きたい。

f:id:tohruyoshino:20200321183955p:plain

 

とりあえず分かりやすいから、Vlookup関数で行ってみるか。

f:id:tohruyoshino:20200321184119p:plain

Vlookup関数らしい感じで設定したが、

検索したセルの”G2”には「1」しか入っていないから正しく表示ができない

 

これを何とか「男1」にしたい。

なので検索値を「G2」から「”男”&G2」にしてみる

f:id:tohruyoshino:20200321184432p:plain

 

やったー!

「ルフィ」って表示された―!

 

因みに「”男”&G2」ではなく、「””」を取った「男&G2」ではダメ

文字列は「””」でくくらないといけないというルールがあるので。

 

後は少し調整して、できあがったのがこちら。

f:id:tohruyoshino:20200321184945p:plain

 

エラーメッセージがカッコ悪いので、IFERROR関数で消す。

f:id:tohruyoshino:20200321185702p:plain

 

これで完成かなー。

説明にすると長いけど、割とあっさりできたね。

 

振り返り

とりあえずできたが「男1」とかの列を足さないといけないのが少し気にかかった。

もう少し工夫すれば消せるかも?

 

あと今回は男女で列が分かれているケースだけど、

連続しているケースもあるわけで1列で表示するにはどうするか検討の余地があり。

 

とりあえず今日はここまで。