プロが教える店舗&オフィスのセキュリティ対策術

色々と検証しましたが、いまいちルールがはっきりしません。
ピンクの一覧表から、ブルーの文字を検出して赤枠に出力です。
右側の数式は赤枠内をコピペしています。

なぜ、右下の2パターンのみ正常に表示されるのでしょうか?

「VLOOKUPで所定の文字が検出できない」の質問画像

質問者からの補足コメント

  • HAPPY

    検索方法に0を入れた結果、左上も正常に表示されました。表示された数式の修正は途中でやめました。
    後段の数字の事は初心者過ぎて理解出来ていませんが、疑問がかなり晴れて満足です。

    「VLOOKUPで所定の文字が検出できない」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2019/02/11 10:56

A 回答 (2件)

私の勝手な考え方ですので間違えてたらごめんなさい。



まず、VLOOKUPの式ですが、
= VLOOKUP (検索する値, 値を検索する範囲, 戻り値を含む範囲の列の番号, 完全一致か近似一致か - 0/FALSE か 1/TRUE で指定)。
とあります。
[検索する値]をチェックするのは、[値を検索する範囲]の一番右端になります。

ですから、左側3番目と4番目はB列を検索しているのではなくA列を検索しています。
同様に右側1番目と2番目はI列ではなくH列をけんさくしています。

次に[完全一致]か[近似一致]かの選択がありませんので、
規定値の[近似一致]になっています。

[近似一致]の場合、昇順に並んでいる必要があり
その値と等しいか越えない最大の値が検索されます。

(ここからは私の考えです)
全角の場合、=CODE()で表示される値で検索していると思います。
CODE("長")=17465、副=18811、高=14690、科=12874、班=18505

検索の方法が、まず[範囲]の真ん中の値をみて(この場合"高")
検索値の方が大きければさらに下側の真ん中を見る
検索値の方が小さければ上側の真ん中を見る・・・
というように上からとか下からすべて検索しているのではないと思います。

例えば "長"の場合、
まず真ん中の"高"を見ます 17465>14690なので下を検索
下側真ん中"科"を見ます 17465>12874なので下を検索
一番下の"班"を見ます 17465<18505なので越えない最大値は"科"
"科"の右側は"え"なので"え"を表示

"科"の場合
真ん中の"高"を見て上側を検索しますが、
上側には"科"よりも小さい値がないので"#N/A"になる
という事だと思います。
あいうえおは昇順に並んでいるので正しい値がでるのだと思います。

[完全一致]にすればきちんと表示されると思いますよ。
この回答への補足あり
    • good
    • 1
この回答へのお礼

解決しました

本当にありがとうこざいました。
また機会がありましたら、是非よろしくお願い致します。

お礼日時:2019/02/11 10:59

最後の2パターンのみ数式のルールがちゃんとできているからですね。


・検索値は、探すリストの左端から探す形になっていること。
・第4引数を省略もしくはTrueにする場合、探すリストの左端は昇順で並んでいること

再掲ですが、まずはVLOOKUP関数をきちんと調べること。
そして、完全一致で検索するんですから第4引数をFALSEにすること。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!