- ベストアンサー
【説明画像あり】VLOOKUPで、情報が呼出せない
- VLOOKUP関数を使用して情報を呼び出す際にエラーが発生し、要求した情報が表示されない問題が発生しています。
- 呼出先のブックに指定したNOが存在する場合は正常に情報が表示されますが、一部のNOにおいてはエラーが発生し、情報が表示されません。
- エラーの原因は、呼出先ブックのセルの表示形式が問題となっており、特定の表示形式では情報が呼び出されないことがわかりました。具体的な表示形式についての解決策を教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
今までの数式は,緑の付いている「文字列」を呼び出せる数式にしてあります。 これはあなたのこれまでのご相談の添付画像で,「ゼロから始まっている(緑の付いた)数字」が特に目立ったからです。 ゼロから始まる数字は,原則として緑を付けて文字列にしておかないと,ゼロから記入できません。 しかしこの数式では,今回ご質問のように緑のついていない数字のセルは呼び出せません。 逆に緑の付いていない数字を呼び出したい場合,数式の方を変えないといけません。 「どっちも区別なく呼び出せる」VLOOKUPの使い方はありません。 対策としては 方法1)全ての数字を緑付きの文字列に統一する【推奨】 方法2)今の数式を更に複雑にして,緑が付いた場合と緑が付いてない場合をそれぞれ想定してどっちが来ても呼び出せるように仕込みを増やす【簡単ですが推奨できません】 方法3)実はゼロから始まる数字を呼び出すというこれまでのサンプルがウソだったので,今回のサンプルの20012のようにゼロから始まらない「数値」に統一する【全てやり直すならこれも良い】 のどれかになります。 【推奨】 緑の付いていないA列を列選択 データメニュー(またはデータタブ)の区切り位置を開始, 何も指定せず次々送り,ウィザードの3/3画面で明示的に「文字列」の設定にマークしてOKする 緑が付いたことを確認する 数式は今まで通りで使う 【すべてやり直す】 緑の付いているA列を列選択 データメニュー(データタブ)の区切り位置を開始, 何も指定せず次々送り,ウィザードの3/3画面で明示的に「標準」の設定をマークしてOKする 緑が消えたことを確認する 数式は IF(ISERROR(VLOOKUP(SUBSTITUTE($B$1,"-","")*1,[検索先.xls]Sheet1!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE($B$1,"-","")*1,[検索先.xls]Sheet1!A:C, とする。 おまけ: この場合に「ゼロから始まる数字」をセルに表示するには セルの書式設定の表示形式のユーザー定義で 00000000 などのように設定を付けて表示させる 参考: 単純に前回の応用で, =IF(ISERROR(VLOOKUP(SUBSTITUTE($B$1,"-","")*1,[検索先.xls]Sheet1!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE($B$1,"-","")*1,[検索先.xls]Sheet1!A:C, &IF(ISERROR(VLOOKUP(SUBSTITUTE($B$1,"-",""),[検索先.xls]Sheet1!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE($B$1,"-",""),[検索先.xls]Sheet1!A:C, と更に式を倍に増やせば,緑でも緑無しでもどっちが来ても対応できます。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
エクセルのほんとに基本的なことが判ってないので、無駄な労力を費やしている。 こういうのはスクールでも行ってじっくり学ぶか、経験を積むうちに会得するか、するのだろう。 ーー エクセル関数で (1)対象にするのは、「セルの値」です。 (2)セルの情報は、セルの値のほかに、表示形式や、数式や、コメントや、入力規則ほか色々あります。 (3)このうち、エクセル関数で対象にするのは「セルの値」だけです。 結果もそのセルの「セルの値」だけしか、返し様が無いのだ。 (4)だからセルの表示形式で、文字列に見せても、解決にならない。 セルの値の数値を文字列に変えるにはTEXT関数などがあり、数字文字列を数値に直すかんすうもある。 しかし計算ソフトが主流のエクセルでは、数字文字列を数値化するお節介場面が相当あるので、つい両者の違いに鈍感に也勝ち。 VLOOKUPは記を気化してくれない比較をおこなう。 (5)関数の対象とは、関数の「引数」といわれるもの(関数の位置)で指定するデータで、主にセルの番地で表されるセルの値です。 ーー そのほかに、 (6)エクセルのセルの値には、主なものは、数値と文字列で、日付も数値で表されます。 この区別が大切なことを気づいていない。 ーー VLOOKUPの検索表で行ごとにバラバラなら統一するほか無い。 (1)元データを修正するか、(2)関数で統一するか。 別列に文字列をだすか、式の第1引数の部分で変換するか。 例 G1:H2に 111 a 123 b <-G2は’123ー数値 ーー A2:A3にデータがあるとして B2の式は =VLOOKUP(VALUE(A2),$G$1:$H$2,2,FALSE) 123 b <--数の123 123 b <-'123 で文字列 (3)検索表に両方持つか G1:H3 111 a 123 b <--G2は数値 123 b <--G3は文字列(’付き) ーー 上と同じく 123 b <ーーA6は値 123 b <--A6は文字列 ーー 式は=VLOOKUP(A6,$G$1:$H$3,2,FALSE) ーーー 検索表のセル番地は$を漬けておいたほうが良い。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
数値(計算できる値)と数字(文字列)の違いを認識しましょう 数式で表すと =1="1" はFALSEとなり、検索できないと考えます で、ど知らかに統一する必要があると思います。 計算する可能性があるなら数値で統一し、必要ないなら数字にしてはどうでしょうか? セルの書式設定で書式を変更しても数値と数字の変換は完成しませんので、 別列に計算後、コピー&値の貼り付けなど、もう一捻り必要となります。