[[20040913195809]] 『vlookup』(T) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『vlookup』(T)

 vlookupの検索値に文字列を入れるとおかしなことになったのですが、
なぜでしょうか?全然違う場所を表示しています。


 おかしなことになっただけでは判りませんので、おかしなことになった式を提示していただけませんでしょうか。
 (川野鮎太郎)

 =VLOOKUP(検索値,範囲,列位置,[検索の型]) の[検索の型]を指定されていますか?
検索の型:「TRUE」 もしくは [省略]
     検索値が見つからない場合に、検索値未満で最も大きい値が使用されます。
検索の型:「FALSE」
     検索値と完全に一致する値だけが検索され、見つからない場合はエラー値 #N/A が返されます。
 
文字列の検索なら「FALSE」になると思います。   (Hatch)

 検索の型は、「1」にしています。それはなぜ「1」なのか理由は分かりません。
常にそれで旨くいっていたので。

 検索値が文字列、(日本を3つに分けて都道府県を3分化しています。)
東の地域を「1」 真ん中の地域を「2」、西の地域を「3」として
検索範囲は都道府県名の列と番号の「1〜3」で、検索値が都道府県名、
出したいのは、番号「1〜3」です。
検索値は各住所の頭3文字(大阪なら大阪府、神奈川県なら神奈川のように)

 ドロップダウンして多くの場所でつくっているのですが、(範囲はちゃんと固定
してます。)場所によって「#N/A」になったり、「0」という意味不明なことに
なったり…


 「1」のところを「FALSE」に書き換えたらどうなりますか? (Hatch)

 検索値が文字の一部とかじゃダメでしょう。
 それから番号を分けるって列を分けてあるんじゃないですか?
 (川野鮎太郎)

 検索範囲やそれぞれのデータなどを具体的に書いて頂けたら解決が早いと思います。
例えば、下のように検索範囲がA1:B5 検索値がC1:C3で、それぞれのデータが下のようなものであれば
D1セルに=VLOOKUP(IF(MID(C1,4,1)="県",LEFT(C1,4),LEFT(C1,3)),$A$1:$B$5,2,0)
としてやれば良さそうですが・・・
	A		B	C		D
1	北海道		1	愛知県犬山市	2
2	神奈川県	     1	大阪府吹田市	3
3	東京都		1	神奈川県横浜市	1
4	愛知県		2		
5	大阪府		3		
 (Hatch)

Sheet 2 に
       A        B         C
1    大阪府   2
2  北海道   1
3  熊本県   3
4  神奈川   1
5  東京都   1
6  岐阜県   1

検索範囲はこんな感じで(まあほんとは北から順に並んでるんですが)
全都道府県がならんでいます。

Sheet 1 に

以下のようにMID関数で残した住所の前3文字が並んでいます。
(約1000件以上…5000件未満かな?)

   A      B     C

1 tanaka   大阪府   06-…

2 minami   北海道   01…

3 teranisi  神奈川   0…

  名前   住所    電話
       (3文字)

みたいな感じで、A列に名前B列に住所の頭三文字、C列に電話番号が並んでて
Cに一行挿入して
空いたC列(C1)に、
=vlookup(B1,Sheet2!$A$1:$B$47,2,1)
と入れる。
で、ドロップダウンすると、都道府県名を検索値としているので、
その都道府県の番号が表記されるはず。
でもそれが表記されないで、「0」や、「#N/A」になったりするのです。
(T)


 ※最後をFALSEではなく1の場合にはSheet2のA1:A47のデータは昇順に並び替えておく必要があります。

 その式をHatchさんの言われるように、=vlookup(B1,Sheet2!$A$1:$B$47,2,FALSE)に変えても、
 きちんと表記されない場合は以下のことが考えられます。

 「#N/A」となる場合=検査値の 神奈川(完全に一致)がSheet2のA1:A47に無い
 ※Sheet2のA1:A47のデータにはスペースなど余分な文字は含まれてませんか。

 「0」  となる場合=検査値の横の列に何も入っていない
 (川野鮎太郎)

 割り込みします。
(T)さんご提示の表が正しいのであれば、
数式は=vlookup(B1,Sheet2!$B$1:$C$47,2,FALSE)
でなくてはならないのでは・・・・?
「B列に住所の頭三文字」ですよね?
単なる書き間違いかもしれませんが。
(KAMIYA)

 上の表(Sheet2のA1:B47)が範囲となる一覧表で、下の表(Sheet1のB列)が検索値だから、
 =VLOOKUP(B1,Sheet2!$A$1:$B$47,2,FALSE) で合ってますよね(^_^A;
 (川野鮎太郎)

 恥〜寝ぼけてました・・・。
(KAMIYA)

 FALSEを入れて一度試してみます。
昇順と言えど、1と2と3しかないのでその通り昇順にはなっているんですが、
一度試してみます。
 検索値が、MID関数のままなのですが、それは何か関係あるんですかね?
見た目は漢字3文字だけど、中身は関数なので、読み取れないとか?
まあ一度やってきます。(T)

 昇順でなければいけないのは1,2,3の方ではなくA列の都道府県名の方ですよ。
 FALSEに変えれば並び替えも必要ありません。
 検査値は関数が入っていても、返り値がちゃんとしてれば問題ないでしょう。
 ちなみにMID関数はD1に住所がある場合 =MID(D1,1,3) ですよね。
 (川野鮎太郎)


 FALSEを入れたらできました!!
 結局適当に理解せずに関数使ってるからこんなことになるんですね。
ありがとうございました。
 あとは、EXCELのHELPで調べてみます。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.