表といえばExcel、データといえばExcel、計算といえばExcel。
私とExcelの出会いは、まだMac版しかなかった頃。
時代は昭和で、私もまだ大学生だったころでした。
世間では、Lotus 1-2-3を使っていて、Macが軽自動車と同じ値段のころでした。
最初にデモも見せてもらったんですよ。
東京・千駄ヶ谷の鳩の森神社の脇にあった、
HyperDAXという店の店頭マシンで、
今風にいえば「カリスマおねーさん」がおられた。
その華麗なExcelさばきを見て、
Excelこそは「神」に違いないと確信してからのお付き合いです。
(おねーさんのほうじゃねーのかよ、とかいうツッコミはなしで)
こんなことを語っていると本題にいけないので、
いきなり本題。
Excelでデータをつくっておいて、
そのデータを他のワークシートで使いまわししたくなる時ありますよね。
同じデータで同じ並びなら、コピーして貼り付ければいいし、
あるいは、=A5 みたいに参照すればそれで済む。
しかし、作っておいた表と、新たにつくる表で、
データの順番が違う、
抜けているデータがある、
何回か同じデータがある、
となると、一気に困ってしまうのです。
コピーでも、=A5 みたいな参照でも、
結局、一行・一行、やるしかなくなってしまうからです。
例えば、
・住所録(名前、住所、電話番号、メールアドレス)
が既にあるとします。
そこでパーティを企画し、その参加者だけのリストをつくるとしましょう。
参加者リストには、便利のために、電話番号とメールアドレスものせたいとしましょう。
さて、
・参加者リスト
に、もう一度、電話番号やメールアドレスを入力しないといけないのでしょうか?
アホらしいです。人数が少なければいいです。しかし、住所録が100名、参加者20名くらいだと、最低でも20回同じ作業が必要です。ミスもします。
世界中でこういうこと困っているはずです。
ですから、こういう問題をあっさりと解決する方法(関数)が用意されています。
INDEX関数とMATCH関数 です。
私は、Excelで表を作るとき、
・原則として、1シート、1表
にしています。こうしておくと、作る式が簡単になるからです。
この後の説明は、これを原則にします。
ワークシートに、「パーティ」シートと、「住所録」シートがあります。
「パーティ」シートに、パーティの参加者名簿をつくるのが最終目標です。
「パーティ」シートは、1行目に
・出欠(空欄、当日記入用)
・名前
・フリガナ
・電話番号
・メールアドレス
を作っておきます。
作業の目標は、「パーティ」シートで
「名前」さえ入れれば、
後のデータは、自動的に「住所録」シートから埋めてくれる
ようにする事です。
人が作業するなら、
参加者一人づつ「名前」を見て、
その人の「名前」を「住所録」シートから探し、
その人の「フリガナ」「電話番号」「メールアドレス」をコピーして
「パーティ」シートに貼る、
という作業をします。
しかし、INDEX関数とMATCH関数を使えば、
この作業は式を書いてコピーする
だけになります。
先に結論を書いておくと
=INDEX(「住所録」シートのデータの列, MATCH(「パーティ」シートの名前のセル, 「住所録」シートの名前の列, 0))
です。この呪文を唱えて、コピーすればいいだけです。
それでは、例として、次の表を見てください。「牧野米子」さんの名前を入れてあるので、フリガナ・電話番号・Emailを「住所録」から取ってくることを考えましょう。
まず、MATCH関数からです。この関数は、
・「パーティ」シートの名前を、「住所録」シートの名前の列から探す
ことをしています。名前を目で追う作業を変わりにやってくれています。
MATCHというのは、近藤正彦(そういう年代なんで)ではなく、「照合」のことです。
上から何番目、という結果が得られます。
この例の場合、「牧野米子」さんの名前を「住所録」シートから探し出すことです。
この例では、上から6番目の行ですね。
次に、INDEX関数です。この関数は、
・「住所録」シートの該当行のデータを指定行から取ってくる
ことをします。列を決めておけば、その中で指定したデータをとってきてくれます。
指定の仕方は、上から何番目という形でします。
INDEXは、「索引」という意味です。何番目といえば出てくる感じです。
先ほどのMATCHで何番目かが分かっています。
この結果をつかって、「住所録」シートの指定行の上から数え、
この行目のデータを返します。
この例では、6番目が「牧野米子」さんの行でした。
6行目からデータをとってくるのがINDEX関数の役割です。
2段階になっているので、ちょっと面倒ですが、やっていることは
・MATCH ・・・ データの共通部分をつかって、データの行を特定すること
・INDEX ・・・ MATCHの行を使って、指定列からデータを取ってくること
と役割分担しているだけです。組み合わせの順番は、
=INDEX(「住所録」シートのデータの列, MATCH(「パーティ」シートの名前のセル, 「住所録」シートの名前の列, 0))
と、INDEXが外側で、MATCHが内側です。
こんな面倒くさいことしなくても、MATCHだけでいいじゃないかと思いませんか?
私も、かつてそう思いました。
しかし、「同じものを探す」というのなら、確かに、MATCHだけで十分です。
しかし、それでは肝心のデータがとってこれません。
今回の場合なら、「名前」で照合して、「フリガナ」や「電話番号」をとって来たいのでした。
すると、どうやって「フリガナ」や「電話番号」を指定するのかが大問題なのです。
ですから、MATCHは照合するだけ、INDEXは取って来たい部分の指定です。
さて、具体的に式はどうなるでしょうか。
「牧野米子」さんの「フリガナ」をとってくるには、
・「住所録」シートのフリガナの列 ・・・ 「住所録」のC列
・「パーティ」シートの名前のセル ・・・ 「パーティ」のB3
・「住所録」シートの名前の列 ・・・ 「住所録」のB列
ですから、式はこのようになります。
=INDEX(住所録!C:C,MATCH(パーティ!B3,住所録!B:B,0))
実際には、式は直接書かず、
=INDEX(
まで入力して、「住所録」シートのC列を選択すると、勝手に、
=INDEX(住所録!C:C
になります。そこで、「,MATCH(」と入力して、「パーティ」シートのB3を選択すると、
=INDEX(住所録!C:C,MATCH(パーティ!B3
になります。そこで、「,」と入力して、「住所録」シートのB列を選択、
=INDEX(住所録!C:C,MATCH(パーティ!B3,住所録!B:B
になります。そこで、最後に「,0))」と入力して「Enter」キーを押すと、
=INDEX(住所録!C:C,MATCH(パーティ!B3,住所録!B:B,0))
になり、セルには「マキノヨネコ」と表示されているはずです。
次の「折笠」さんには、この式を、「パーティ」シートのC4にコピーしてやればいい。
同様に、C5やC6にも、コピーしてやれば大丈夫です。
「電話番号」でも、同様です。
「牧野」さんの場合、
・「住所録」シートの電話番号の列 ・・・ 「住所録」のE列
・「パーティ」シートの名前のセル ・・・ 「パーティ」のB3
・「住所録」シートの名前の列 ・・・ 「住所録」のB列
ですね。変わったのは、下線部分だけです。
すると、「パーティ」シートのD3に、次の式を
=INDEX(住所録!E:E,MATCH(パーティ!B3,住所録!B:B,0))
です。これも一つ作れば、D4やD5にも、コピーしてやれば大丈夫です。
Emailならどうなるか、わかりますか?
対応する行や列は
・「住所録」シートのEmailの列 ・・・ 「住所録」のF列
・「パーティ」シートの名前のセル ・・・ 「パーティ」のB3
・「住所録」シートの名前の列 ・・・ 「住所録」のB列
で、E3に入れる式は、
=INDEX(住所録!F:F,MATCH(パーティ!B3,住所録!B:B,0))
です。これも一つ作れば、D4やD5にも、コピーしてやれば大丈夫です。
こういう風にやると、次の表が作れますね。
●「相対参照」と「絶対参照」が分かる場合
「相対参照」と「絶対参照」が分かる方でしたら、以上の作業はもうちょっと、簡単になります。
御覧のように、作った式の後半部分は一緒ですから、
そこは初めから絶対参照にしておけばいいことになります。
最初の「フリガナ」をとってくる式を
=INDEX(住所録!C:C,MATCH(パーティ!$B3,住所録!$B:$B,0))
と、絶対参照にしておくと、後で式を修正するにしても応用が効きます。
私なら、この式をまず作っておいて、この式を、
D3にはる
すると自動的に式は
=INDEX(住所録!D:D,MATCH(パーティ!$B3,住所録!$B:$B,0))
に変化しています。このままでは、「住所」をとってきてしまうので、
この式の、「住所録!D:D」を反転させて、
「住所録」シートのE列を選択すると、勝手に、
=INDEX(住所録!E:E,MATCH(パーティ!$B3,住所録!$B:$B,0))
になるので「Enter」を押す。これで、「電話番号」が表示されました。
次は、この式を、
E3にはる
すると
すると自動的に式は
=INDEX(住所録!F:F,MATCH(パーティ!$B3,住所録!$B:$B,0))
に変化しています。メールアドレスが表示されたはずです。
あとは、C3からE3を選択して、コピーし、
C4からC5,C6・・・と必要なところまで、選択して、ペーストするだけです。
さて、「神」Excelとの出会いののち、
わたしは、周りにExcel教を布教することになりました。
ちょうどいいことに、Windows 3.1が登場し、
日本でも、Windows版のExcelが発売されました。
研究室の先生に頼んで、買ってもらったWindows版のExcelは速かったなぁ。
激速でした。
関数を極め、マクロを修め、
小道具をつくったり、ホームページの部品をつくったり、
学位論文を書いたときは、システムをExcel上で組んでしまいました。
その後も、Excel様には頭が上がりません。
「よみがえる日本語」の分詞表も、
ヲシテのデジタルテキストもすべてExcel上です。
でもね、Excel 2007 は嫌いだね。
まだまだ、Excel XP(2002) を使っている私なのでした。






ExcelがMACしか無かった事は知りませんでした。
もうMACとの出会いは20年近くなります
ビジュアル系ですからね。