- 締切済み
(再)VLOOKUP関数のエラーについて
4/28にNo.9165193で質問し、データ不足にもかかわらず、複数の方からご回答をいただきましてありがとうございました。回答者の方からデータの不備をご指摘いただき、図を添付して再度質問をさせていただきます。Excelは2010です。よろしくお願いいたします。 sheet1は、コードを入力したら品名を表示するようにしたいのです。sheet2にはコード表があります。sheet2のコード表を参照して、sheet1の品名を表示させる形式にしたいと思っています。コードはA~Eと1~5です。コードAの場合、エラーとなり品名が表示されません。(sheet1のB3、B13、B14) sheet1のC3の関数式は、=VLOOKUP(B3,コード一覧!$B$3:$C$13,2)です。C3以下はB列のセルが下に移動します。 以下は説明が重複しますが、図を添付するのは初めてで心配なので、念のため文章を付け加えます。 sheet1のB3 に「コード」、C3に「品名」、B3~B15までコードをランダムに入力しています。 コードを入力すると、C3~C15に品名が表示される。(表の作成時はブランク) sheet2のB1 に「コード一覧」、B3に「コード」、C3に「項目」、B4~B13は上から「A~E、1~5」、C4~C13は上から「キャベツ、レタス、白菜、小松菜、じゃがいも、りんご、みかん、もも、ぶどう、レモン」と入力しています。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
>C3はフィールド名なのでVLOOKUP関数を使わずにキーボードから直接入力することをお勧めします」の意味がよくわかりません。sheet1のC3の関数式は、手入力をするという意味ですか? 表現に不適切な部分が有ったようです。(勘違いです) 真意は「コード一覧!$B$3:$C$13を検索範囲にすることを避け、フィールド名の3行目を外してコード一覧!$B$4:$C$13にすべきです。」と言う指摘に変更させてください。
- bunjii
- ベストアンサー率43% (3589/8249)
>sheet1のC3の関数式は、=VLOOKUP(B3,コード一覧!$B$3:$C$13,2)です。 C3はフィールド名なのでVLOOKUP関数を使わずにキーボードから直接入力することをお勧めします。 >C3以下はB列のセルが下に移動します。 正しい表現になっていません。 「C4セル以下はC3セルをオートフィルでコピーする。」が正しい表現です。 しかし、前述のようにC3セルはフィールド名なのでデータ処理とは別な処理をする方が誤りを防げます。 C4=VLOOKUP(B4,Sheet2!$B$4:$C$13,2) C5以下はC4セルをコピー&ペーストまたはオートフィルで下へコピーすれば良いでしょう。 尚、VLOOKUPの検索条件を省略するとTRUEと同じになり、近似値の小さい方を選択することになっています。 従って、範囲は昇順でソートしておく必要があります。 Sheet2のB4以下は「1,2,3,4,5,A,B,C,D,E」の順にすべきです。 但し、VLOOKUPの検索条件をFALSE(完全一致)にすれば範囲のデータ配置はランダムでも正常に検出できます。
お礼
ご回答をありがとうございました。 お礼を申し上げるのが遅くなりましてすみません。 「C3はフィールド名なのでVLOOKUP関数を使わずにキーボードから直接入力することをお勧めします」の意味がよくわかりません。sheet1のC3の関数式は、手入力をするという意味ですか? 「>C3以下はB列のセルが下に移動します 正しい表現になっていません」はご指摘のとおりでした。やっていることはオートフィルですので、その表現を使うべきでした。 今回は検索条件FALSE(完全一致)を入れなかったことによるエラーだとわかりました。 ありがとうございました。
- kkkkkm
- ベストアンサー率66% (1719/2589)
エクセルのヘルプより VLOOKUP(検索値, 範囲, 列番号, [検索の型]) 中略 検索の型 省略可能です。VLOOKUP を使用して検索値と完全に一致する値だけを検索するか、その近似値を含めて検索するかを指定する論理値です。 TRUE を指定するか省略すると、検索値と完全に一致する値、またはその近似値が返されます。完全に一致する値が見つからない場合は、検索値未満の最大値が使用されます。 重要 検索の型に TRUE を指定するか省略する場合は、範囲の左端の列にある値を昇順に並べ替えておく必要があり、これを行わないと、正しい値が返されない場合があります。 検索の型に FALSE を指定する場合は、範囲の左端の列にある値を並べ替える必要はありません。 検索の型に FALSE を指定すると、検索値と完全に一致する値だけが検索されます。完全に一致する値が範囲の左端の列に複数ある場合は、最初に見つかった値が使用されます。完全に一致する値が見つからない場合は、エラー値 #N/A が返されます。 今回は、省略した場合の「重要」の「これを行わないと、正しい値が返されない『場合』があります」の場合に該当したのではないでしょうか。
お礼
ご回答をありがとうございました。お礼を申し上げるのが遅くなりましてすみません。 「重要」の箇所に書かれてあるように、検索の型を指定しなかったのでエラーになったのかもしれません。 ありがとうございました。
- omosiroi2
- ベストアンサー率30% (235/764)
- SoltyRevant
- ベストアンサー率59% (129/216)
完全一致関連の話ですと、 以下のURLにて詳しく説明されております。 ご参考までに。
お礼
ご回答をありがとうございました。お礼を申し上げるのが遅くなりましてすみません。 詳しい説明のURLを教えてくださりありがとうございます。VLOOKUP関数について、図解での説明もとてもわかりやすいです。 とても参考になりました。ありがとうございました。
単純に引数が足りてない気がします。 =VLOOKUP(B3,コード一覧!$B$3:$C$13,2,FALSE) にしてみてはいかがですか。 TRUEが部分一致、FALSEが完全一致です。
お礼
ご回答をありがとうございました。お礼を申し上げるのが遅くなりましてすみません。 おかげさまで正しい値が表示されるようになりました。 ありがとうございました。
補足
早速のご回答ありがとうございます。式に「FALSE」を追加すると、品名が正しく表示されました。 関数については全く初心者のため、すみませんがもう少し詳しく教えていただければうれしいです。「TRUEが部分一致、FALSEが完全一致」とはどういう意味でしょうか。「FALSEが完全一致」だとして、Aがエラーで、他のコードは正常に値が返るのはどうしてなのでしょうか。他のコードは何故エラーにならないのでしょうか。面倒なご質問で申し訳ございません。説明されているサイトなどご存知でしたら、教えてくだされば助かります。
お礼
再度ご回答をありがとうございます。 ご説明の意味がわかりました。 ありがとうございました。