数学が好きなサラリーマンのブログ

数学が好きなサラリーマンのブログです。数学ネタから大学受験数学、ビジネスやライフスタイルまで数学が好きなサラリーマンの頭の中を大公開しています。

数学をVLOOKUP(Excel関数)で役立ててみる。

f:id:mathbanker:20210621083815j:plain

 

数学にちなんだ話として
社会に出て数学が役に立つかどうか
というのを耳にする。

 

この話題、いろんな観点から賛否両論あれど、今回は社会人にとってお馴染みのEXCELという観点からひとつ紹介したい。

 

 

例えば、こんな場面。
ある会社に所属する従業員の組織情報マスタがあるとする。
この会社の組織図は、よくあるネスト構成になっていて、複数の部門のそれぞれの下に部があり、さらにそれらの配下に課がある形だ。
このマスタにはこの階層をレベルで示した情報と、それぞれのコード値がある。

 

例えば、一人分のレコードをみてみると

f:id:mathbanker:20210622081655p:plain
といった具合だ。


一番右の新課の情報は現在の課(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$
となるような数列の一般項を求めよ、と解釈できる。等比数列になっているから簡単だ。

 

では次のようなケースではどうだろう。

f:id:mathbanker:20210622082158p:plain

とし、部長、課長には既存の名前で渡すけど、部門長に新しい名前で渡したい。

 

このケースでは
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'$

 に代入すると計算が楽、というものがあるけど、そもそも今回の趣旨は問題を解くことではない。ほかに楽ができる方法があるなら、それを使えばいいわけで例えばこんなやつ。

math.microsoft.com

 

これを使えばわざわざ連立方程式を解かなくて、スマホだったらカメラを向けるだけで済むので便利。

 

得られた式をLvの入力セルを変数として、Vlookup関数の第3引数に代入すれば、LVに応じて自動的に参照列が切替わる式が得られる。

 

 

数学が使えるかどうかって、論理力とかロジカルシンキングとか、なにかとふわっとした表現でごまかされがちだけど、割に具体的に使える状況があったりする。

面倒な作業は眼前にある時に、数学で楽できないかな、と考えてみよう。