- ベストアンサー
《エクセル2000》VLOOKUP、クエリについての質問
こんにちは。エクセルのバージョンは2000(アップデート済み)です。 タイトルのとおり、2つほど質問があります。 詳しい方、なにとぞよろしくお願いします。 【1.VLOOKUP】 A列に市町村名、B列に人口が入っています。 市町村名をキーに、VLOOKUPを使ってC列に別シートにある庁舎の住所を入れたいです。 …といった場合なのですが、当然自治体名には重複があります。 そこで質問なのですが、キーとなる列のデータに重複がある場合、VLOOKUPを使うとどうなるのでしょうか? 【2.クエリを使った外部データの抽出】 クエリを使ってデータを抽出する場合、数値の範囲など色々な条件を加味させることができますが、「抽出する行の範囲を指定する」のに、一番手っ取り早い方法は何でしょうか。 例えば、A列に番号を入れるようにして、その数字の範囲内で拾うという方法があると思うのですが、もっとスマートな方法はあるでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1.VOOKUP =VLOOKUP(検索値,範囲,列番号,検索の型) の検索の型をFALSEにした場合、データを上から検査します ので、重複したデータの一番上にあるデータが表示される はずです。 検索の型をTRUEにした場合、データを2分法(?)で検索 しますので、データの並び順によって、どのデータがヒット するか分かりません。 2.クエリ 例えば、の方法でよろしいかと思います。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
#2,#3です。セルを少し変えます。 同名の市町村が全国に#2のとおりあります。 A1にカナ名で市区町村名をいれて、どの県にあるか(市庁の住所がどこかでも同じ)、複数の県に同名の市等があるとき、その複数県名をC列に表示する関数の仕掛けを説明しました。 テーブルをD1:E15に(D列がかな、E列に府県名) ふちゅうし 東京 せんだいし 宮城 せんだいし 鹿児島 やまがたし 山形 かしまし 佐賀 こがし 福岡 やまがたし 岐阜 かしまし 茨城 こがし 茨城 つしまし 愛知 いずみし 大阪 つしまし 長崎 いずみし 鹿児島 ふちゅうし 広島 くにたちし 東京 (以下全国で1つの市区町村が続くが略) (関数式) B2に=B1+MATCH($A$2,OFFSET($D$1,B1,0,15-B1,1),0) B3以下にB2の式を複写します。 C2に=OFFSET($E$1,B2-1,0) C3以下にC2の式を複写します。 (例) A2に「ふちゅうし」と入れます。 C2に東京、C3に広島と出ます。 B2には1、B2には14が出ますが、第1行目、第14行目に府中市があることを割り出しています。 #N/Aを出さないようにするには、例えばB2に =IF(ISERROR(B1+MATCH($A$2,OFFSET($D$1,B1,0,15-B1,1),0)),"",B1+MATCH($A$2,OFFSET($D$1,B1,0,15-B1,1),0))とします。 C列も同要領です。
お礼
こんにちは。お礼が遅くなりまして… うーん、すいません。 この質問、仕事の合間にちょくちょく考えてみたのですが、やっぱり私の質問の仕方がよくないとみえて、こんなにたくさん書き込んでいただきましたのに、回答していただいたことがよくわからないです… 本当にすいません。 ずいぶん時間が経ったのでいったん締め切ることにしますが、親身にお答え下さったこと、大変感謝しております。 本当にありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
#2のお礼の疑問。 疑問の意味が良く判らないのですが ひらがなで、全国の市名を入力して、何県にあるか割だし 表示しようとして、何行目と何行目にあるか関数で見つける例です。本来は県名を出すのですが略。
お礼
たびたびすみません。 No.3のご回答の意味はわかるのですが、未だNo.2のお礼の方が… D1:E14 ふちゅうし 東京 せんだいし 宮城 せんだいし 鹿児島 やまがたし 山形 かしまし 佐賀 こがし 福岡 やまがたし 岐阜 かしまし 茨城 こがし 茨城 つしまし 愛知 いずみし 大阪 つしまし 長崎 いずみし 鹿児島 ふちゅうし 広島 これは、D1:E14の範囲にかけて、データが入っているということでよろしいのでしょうか。 (例えば佐賀の「かしまし」が入力されているセル名は、D5になると)
- imogasi
- ベストアンサー率27% (4737/17069)
前半の方 >キーとなる列のデータに重複がある場合、VLOOKUPを使うとどうなるのでしょうか? VLOOKUP関数のFALSE型は、 初出するところだけを拾います。2番目以後に有る同名の 市区町村は、VLOOKUP関数では引きようがありません。 (例データ) 検索表D1:F6 a 1 b 2 c 3 a 4 c 5 f 6 A列に検索値が入るとして B1に関数式=VLOOKUP(A1,$D$1:$E$6,2,FALSE) と入れて下方向へ複写します。 結果は a 1 c 3 b 2 d #N/A c 3 a 1 f 6 a 1 と「a」はいつも1です。上例の「4」は返しません。 (重複の場所を割だし)エッセンスだけ ダブリがあるか察知するには。 D1:E14 ふちゅうし 東京 せんだいし 宮城 せんだいし 鹿児島 やまがたし 山形 かしまし 佐賀 こがし 福岡 やまがたし 岐阜 かしまし 茨城 こがし 茨城 つしまし 愛知 いずみし 大阪 つしまし 長崎 いずみし 鹿児島 ふちゅうし 広島 D10に「ふちゅうし」 G10に=G9+MATCH($A$10,OFFSET($D$1,G9,0,14-G9,1),0) をいれG13まで複写。 1 14 #REF! #REF! 存在する行数の1、14が判れば、府県名はOFFSET関数で出せますが略。
お礼
こんばんは、ご回答ありがとうございます。 >D10に「ふちゅうし」 この部分のみ、ちょっと引っかかったのですが、「つしまし」のセルに「ふちゅうし」と手入力で上書きするという意味でしょうか?
お礼
こんばんは。 1)一番上のデータが反映されるのですね、了解です。 2)うーむ、やはりこちらの方法になるのですか。 設定上でできるような方法があればいいなと思ったのですが。 ご回答ありがとうございました。