数学にちなんだ話として
社会に出て数学が役に立つかどうか
というのを耳にする。
この話題、いろんな観点から賛否両論あれど、今回は社会人にとってお馴染みのEXCELという観点からひとつ紹介したい。
例えば、こんな場面。
ある会社に所属する従業員の組織情報マスタがあるとする。
この会社の組織図は、よくあるネスト構成になっていて、複数の部門のそれぞれの下に部があり、さらにそれらの配下に課がある形だ。
このマスタにはこの階層をレベルで示した情報と、それぞれのコード値がある。
例えば、一人分のレコードをみてみると
といった具合だ。
一番右の新課の情報は現在の課(Lv3)が組織改編により新しい名前になることを示している。
今、全社員の個人情報一覧が手元にある。これに所属情報をつけて、各レベルの所属長に渡したい。営業一部長に渡すときは、
Aさん Aさんの住所 Aさんの生年月日 営業第一部
だし、法人営業課長には、
Aさん Aさんの住所 Aさんの生年月日 法人営業2課
と新課の名前で渡したい。
こんなとき、全社員の個人情報一覧に対し、VLOOKUP関数で値を流し込む人がきっと多いはずだ(ファイル分割まで考えるとVBAだろうけど、そこはさておき)。
VLOOKUP(検索値, 検索範囲, 検索列, 検索タイプ)
として使うけど、知らない人は先にググってほしい。
レベルごとに検索列の値を変更する必要があって、Lv1から順番に、
先頭レコードで2をいれて全従業員にコピー
→先頭レコードで4をいれて全従業員にコピー
→先頭レコードで8をいれて全従業員にコピー
とやってもいいけど、どこかのセルにLVをいれるようにしておいて、一括で切替わるようにしておくと便利だ。
Lvの値に合わせて
Lvが1→2
Lvが2→4
Lvが3→8
となればいい。
こんなときは数列で考える。このケースは
$a_1=2, a_2=4, a_3=8$
となるような数列の一般項を求めよ、と解釈できる。等比数列になっているから簡単だ。
では次のようなケースではどうだろう。
とし、部長、課長には既存の名前で渡すけど、部門長に新しい名前で渡したい。
このケースでは
Lvが1→8
Lvが2→4
Lvが3→6
となればいい。しかし、同じように数列で考えようとしても、
$a_1=8, a_2=4, a_3=6$
となるような数列をいいあてることは難しい。
ならば数列を一般化してみよう。数列は、自然数を定義域とする関数とみることができる。つまり
$f(1)=8$
$f(2)=4$
$f(3)=6$
となるような関数を見つければいい。この場合、一番単純そうなのは2次関数を考えることだ。
通る3点がわかっているときの2次関数の求め方は、
$f(x)=ax^2+bx+c$
に代入して$a$、$b$、$c$をそれぞれ求めればいい。
計算テクとしては、
$f(x)=a'(x-2)^2+b'(x-2)+c'$
に代入すると計算が楽、というものがあるけど、そもそも今回の趣旨は問題を解くことではない。ほかに楽ができる方法があるなら、それを使えばいいわけで例えばこんなやつ。
これを使えばわざわざ連立方程式を解かなくて、スマホだったらカメラを向けるだけで済むので便利。
得られた式をLvの入力セルを変数として、Vlookup関数の第3引数に代入すれば、LVに応じて自動的に参照列が切替わる式が得られる。
数学が使えるかどうかって、論理力とかロジカルシンキングとか、なにかとふわっとした表現でごまかされがちだけど、割に具体的に使える状況があったりする。
面倒な作業は眼前にある時に、数学で楽できないかな、と考えてみよう。