名簿などに「ア」「カ」「サ」「タ」「ナ」のインデックス(索引)を作りたい!
左のような名簿の場合、D列のフリガナの先頭文字を基準にアカサタナと振り分けたいわけですが、「ア」の他に「イ」でも「ウ」でもア行として認識させなければいけない・・・。
この処理をどうすべきか結構悩みました。
試行錯誤した末に「ア」から「ン」までの、カタカナの50音の文字コードを、めっちゃ地味〜に(笑)、CODE関数を使って調べてみたんです。
そうすると、ア行の文字は、文字コード「9506」〜「9514」、カ行は「9515」〜ということが分かり、
文字コードでこんな風に分類できることが分かりました。
ちなみに、どうでもいいかもしれませんが、文字コード「9571」は、「ヤ」ではなく「ャ」、そうです小さい「ャ」なんです。
大きい「ヤ」の文字コードは「9572」なんですが、小さい「ャ」もヤ行ということで、「9571」からヤ行ということにしてみました。
文字コード「9582」も同様です。
そして、上の図のように、この文字コードの分類表を、「コード」というシートに作り、後々の作業が楽になるように、文字コードの分類表 A1番地からB10番地までに「文字コード表」という名前を設定しました。
実際に索引を作りたい名簿自体は、今回の例では「名簿」シートにあります。
この名簿シートに、索引を表示する列を作り、更に索引を作るために1段階作業しなければならないのですが、その作業を行う列も作っておきます。
早速、索引を作っていきます!
今回はフリガナを元に索引を作っていくわけですが、フリガナは全角のカタカナであることを前提として進めていきます。
また、Excel 2010・2007をお使いの方で、索引を作りたい名簿が、既にテーブルに変換されている方は、作業を始める前に、このページの一番最後の項目を読んでからスタートしてください。
「索引の作業用」列の考え方
まずはB2番地には、D2番地に表示されているフリガナの、先頭文字の文字コードが、
アカサタナ・・・のどの行に当てはまるのか、「文字コード表」から探し出し、表示させます。
そうです、対応するものを一覧表から探し出すわけですから、VLOOKUP関数を使います!
実際の操作の前に、B2番地に入れる数式がどんな風になるのか、VLOOKUP関数の引数に照らし合わせながら考えてみます。
D2番地の先頭文字の文字コードを
(検索値)
「文字コード表」から探し出し、
(範囲)
対応したものの左から2列目のデータを
(列番号)
答えとして表示してね、となります。
ところがここで、引数[検索値]に注目します。
「D2番地の先頭文字の文字コードを」
もうお気づきですね?
引数[検索値]は、
「D2番地」ではなく、
「D2番地の先頭文字の文字コード」なんです!
この名簿の中には、D列に表示されているフリガナの、文字コードを表示させている欄はありません。
というわけで、D2番地に表示されているフリガナの、先頭文字の文字コードを調べつつ、VLOOKUP関数を使います!
スポンサーリンク
さっそく「索引の作業用」列を操作!
考え方が整理できたので、さっそく操作していきます!
B2番地を選択し、VLOOKUP関数を選びます。
引数[検索値]は、「D2番地の先頭文字の文字コードを」です。
ここでD2番地の先頭文字の文字コードを調べなければなりません。
それはCODE関数を使ってできるので、[検索値]の欄にCODE関数を入れていきます。
[検索値]にカーソルがある状態で、
数式バーの左にある[▼]をクリックし、一覧からCODE関数をクリックで選択します。
一覧に無い場合は、[その他の関数]をクリックし、表示されたダイアログボックスでCODE関数を選択します。
ダイアログボックスがCODE関数のものに変わりました!
先頭文字の文字コードを知りたいのは、D2番地なわけですから、引数[文字列]には「D2」を指定します。
ここで注意です!
この時点でダイアログボックスの[OK]ボタンを押してはいけません!
なぜなら、VLOOKUP関数の引数の設定が、すべて終わっていないからなんです! というわけで、今はCODE関数のダイアログボックスになっていますが、これをVLOOKUP関数のダイアログボックスに戻します。
数式バーで「VLOOKUP」の文字のところでクリックすると、ダイアログボックスがVLOOKUP関数のものに戻りました!
引数[検索値]には、先程までの操作で、「D2番地の先頭文字の文字コードを」という指定ができているのがわかります。
残りのVLOOKUP関数の引数を設定していきます。
引数[範囲]は「「文字コード表」から探し出し、」です。
[範囲]の欄にカーソルを移し、[F3]キーをポンッと押すと、
この文書内に設定されている名前の一覧が表示されるので、(って、今回の例では1つしか名前を設定してないですが)、「文字コード表」を選択し、[OK]ボタンをクリックすると、
引数[範囲]を簡単に設定できました。
続いて、引数[列番号]の欄にカーソルを移します。
今回は、D2番地の先頭文字の文字コードを、この「文字コード表」から探し出し、それに対応する索引(ア、カ、サ、タ、ナ・・・)、つまり、この「文字コード表」の2列目の文字を表示させたいわけですから、
引数[列番号]は、「2」となります。
引数[検索方法]は、「1」となるのですが、
【Excel 2003】
引数[検索方法]は、[検索の型]となります。
これは、対応するものを「文字コード表」から探し出す際に、キッカリ検索するのか、あいまい検索するのかを指定する引数です。
今回はあいまい検索をしたいので「1」としたわけですが、「どうして?」という方は、本家Be Cool Usersの下記のページで違いを解説しています!
これで、VLOOKUP関数の、
[検索値] | D2番地の先頭文字の文字コードを |
---|---|
[範囲] | 「文字コード表」から探し出し、 |
[列番号] | その表の2列目のデータを答として表示してね |
[検索方法] | 探し出す方法は、あいまい検索ですよ |
というすべての指定が終わったので、今度こそ(笑)ダイアログボックスの[OK]ボタンを押します。
B2番地に数式を入力することができました!
あとは、オートフィルで、残りのセルにも数式を入れれば、
「索引の作業用」列の操作は完了です!
スポンサーリンク
「索引」列の考え方
先程までの作業で、B列には、フリガナの先頭文字がア・カ・サ・タ・ナ・・・のどの行に当てはまるのかを振り分けて表示させました。
でも、実際には、B列のように、全部のセルにア・カ・サ・タ・ナ・・・が表示されているとかえって見づらいので、左の図のように、ア行・カ行・サ行・・・それぞれの先頭にだけ索引が表示されるようにします。
この「索引」列に関しては、数式を入力する先頭である、A2番地で考えるより、もっと下のセルで考えた方が分かりやすいので、そうしてみます。
ここで、5行目の阿部寛子さんの索引(A5番地)がどうなるか考えてみましょう。
阿部寛子さんの索引の作業用に表示されているデータ(B5番地)と、その一つ上のセル(B4番地)に表示されているデータが同じだった場合、上の図の完成例のように、「索引」には何も表示させたくありません。
今度は10行目の筧利代さんの索引(A10番地)で考えてみます。
筧利代さんの索引の作業用に表示されているデータ(B10番地)と、その一つ上のセル(B9番地)に表示されているデータが違う場合、ア行からカ行に変わったところなので、B10番地のデータをそのまま「索引」として表示させたいわけです。
ここまでをまとめると、
もし、「索引の作業用」に表示されているものが、その一つ上のセルと同じだったら、 |
空欄 |
そうじゃなければ、「索引の作業用」に表示されているものをそのまま表示 |
となります。
もうお分かりですね?IF関数を使います!
IF関数の引数にあてはめると、こうなります。
[論理値] | もし、「索引の作業用」に表示されているものが、 その一つ上のセルと同じだったら、 |
---|---|
[真の場合] | 空欄 |
[偽の場合] | そうじゃなければ、「索引の作業用」に表示されているものをそのまま表示 |
さっそく「索引」列を操作!
では早速、操作を開始します。
数式を入れたい「索引」列の先頭、A2番地を選択し、IF関数を選びます。
[論理値] | もし、「索引の作業用」に表示されているもの(B2番地)が、 その一つ上のセル(B1番地)と同じだったら、 |
---|---|
[真の場合] | 空欄 |
[偽の場合] | そうじゃなければ、 「索引の作業用」に表示されているもの(B2番地)をそのまま表示 |
A2番地に入力するIF関数の引数は、上の表にまとめた通りなので、引数の設定は左の図のようになりますネ。
数式を入力することができました!
あとは、オートフィルで、残りのセルにも数式を入れれば、
「索引」の完成です!
B列は、この「索引」を作るための作業用の列なので、非表示にするといいと思います。
A列の「索引」は数式でできているので、後々並べ替えを行ってもちゃんと機能します。
左の図は「フリガナ」で降順で並べ替えをしてみた状態です。
「索引」を作りたい名簿がテーブルに変換されている場合
Excel 2010・2007をお使いの方で、索引を作りたい名簿がテーブルに変換されている場合は、ちょっとだけコツが必要です。
まず、「索引」のための列を挿入すると、挿入した列がテーブルとして認識されていなかったりします。
その場合は、[テーブルのサイズ変更]を行って、挿入した列もテーブルとして認識されるようにします。
それから、数式を設定している際に、セル番地を指定しようとセルをクリックで選択すると、左の図のようにセル番地ではなく、クリックしたセルの項目名のようなものが表示されます。
これは、「構造化参照」という、テーブルの便利な機能の一つです。
構造化参照についての説明は、先に進みたいので(笑)ここでは省きます。
今回の場合は、セル番地で指定した方が分かりやすいので、数式中にセル番地を指定したい時には、セルをクリックで選択する方法をとらず、キーボードで「D2」という風にセル番地を入力します。
また、テーブルに変換されている表では、先頭のセルに数式を入れると、オートフィルをしなくてもその下のセル全てに自動的に数式が入りますので、楽ちんです。
これは便利な機能なので、ビックリしなくて大丈夫ですヨ。