昨日のExcel格闘記です。
わかってる人には何でこんな事で、と思われ
興味のない人には、全く面白くない話題でしょう。
私は、ゲームより余程こう言うのが好きですが。
ま、備忘録と言うことで。(笑)
さて、住所録って市販ソフトを使ってる人が多いのだろうか?
当方は、ずっとExcelで住所録も会計もやって来て別段大きな不都合もなかった。
で、住所録から一個人、例えば山本太郎さんの住所を調べようとすると、
ファイルの下の方、ヤ行までスクロールして該当する行を見つけるという
なんともアナログなやり方をしてきた。(笑)
VBAで名前を入力すれば住所や電話番号を表示させることは可能だろうが。
今更、VBAと格闘するのもしんどい。
そんなわけで、vlookup関数を使ってデータを呼び出すこともしていた。
が、山本太郎だったか太朗だったか判然としない場合検索ワードに困る。
また、鈴木一郎のように同姓同名もあり得る。
一つの方法としてワイルドカードを使う手がある。
が、ただの*ではダメで、例えば(”*”A1”*”)と言う風に
セルをダブルクォーテーションで囲んだアスタリスクを前後につける。
こうすると、フルネームで検索せずとも苗字だけで検索できる
しかし基本、vlookupという関数はデータを一つしか抽出しない。
ここをなんとかせねばと複数データを呼び出す方法をネットでさがした。
あるんですね、いい手が!(^^;
・LEFT関数で苗字の二文字だけを切り出す。
・IFCOUNT関数で同じ苗字に番号をつける。番号の列と名前の列と並ぶが、これを列のコピペとセルの結合で山本1山本2山本3、、とする。
・データの先頭列にこの番号付き苗字を配置する。これも含めてデータの範囲指定をすると山本nが検索対象になる。
・今度は結果を書き出す列に1,2,3・・・と数字を縦に入力する。(最大想定人数分)
・一行目に書いたセルの式を下方にコピーする。
・結果表示で10行取っているのにデータが三行で終わったりすると#N/Aのオンパレードになる。 これを避けるためvlookupの前に=iferror文を付ける。
例:
=IFERROR(VLOOKUP($A$2&$B2,$K$2:$N$200,2,FALSE),"")
これを文章で言えば、K2からN200までにあるデータからA2に書いてある人を探し出しC列2行目以降に番号順にその住所を列記せよ。もし該当者がいない場合は空欄にせよ。
てな具合になりまする。(^^;
〒番号や、電話番号を書かせるには、式中、FALSEの前の数字をデータの列番に応じて変えていくだけでOK。
データ範囲は別シートに収めた方がカッコイイかも。(^^;
その場合は、シートの名称の後ろに!をつけてその後にデータ範囲を指定。
たったこの一行のためにネットで答を探しながら半日費やしてしまったよ。(^^;
が、惚け防止には最高!(^^;