- ベストアンサー
エクセルで任意でエラーメッセージを表示したいのですが
こんにちは。 エクセルでコード表を別シート上につくりVLOOKUP関数でコードを入力して表示しているのですが、別シートのコード表に登録されていない場合任意でエラーメッセージで ”登録されておりません”と言うように表示したいのですが 教えてください。 ちなみにAの1に10 Bの1には りんご と表示出来るようになってます。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
litoruさん、こんにちは。 Wendy02です。 >今作っているものは他の人が使うのでエラーメッセージを出してあげた方親切かなって思ったので。 私も、他人の使うものは、いくつかの「エラー処理」は考えてあげたほうが良いと思っています。 >ご指摘いただいたとおりエラーになっております。 そこで、 =VLOOKUP(A1,範囲,列番号,0) この式をもう一度、データの元の範囲をきちんと設定し直してみてください。次に列の数は範囲内ですか?何か、ずれているのではありませんか? 式を修正しようとすると、同じシート内でしたら、カラーリファレンスと言って、その引数の範囲に色の枠が付きますから、それで確認できるかと思います。
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17070)
#4です。 回答が続いているので、#4で述べたことをコードにしてみました。 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo errdesp Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") If Target.Address = "$A$1" Then W = Application.WorksheetFunction.VLookup(sh1.Range("a1"), sh2.Range("a2:B6"), 2, False) sh1.Range("b1") = W End If Exit Sub errdesp: MsgBox "品名コードが表にありません" sh1.Range("a1:B1") = "" End Sub Sheet1のChangeイベントに下記を貼り付ける。 A1にコードを入力する。 Sheet2に コード 品名 1 りんご 2 みかん 3 バナナ 4 もも 6 ぶどう を作ったので、5や7以上を入れるとエラー表示が出ます。 使えるかどうかは心配ですが検討してください。 「Sheet1のChangeイベントに・・」は勉強してくだくとして、略します。
お礼
遅くなり誠に申し訳ありませんおかげさまで何とかなりそうです。 ありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
#2 の Wendy02 です。 単に、この式だけで、 =VLOOKUP(A1,範囲,列番号,0) 範囲、列番号の引数を入れて、A1 に「登録がされているコード」を入れたら、正しく、値が返りますか? エラーが返っているのではありませんか?
補足
お答えありがとうございます。 ご指摘いただいたとうりエラーになっております。 >< VLOOKUP関数を使用しているものを今までは、自分専用に使っておりましたが、今作っているものは他の人が使うのでエラーメッセージを出してあげた方親切かなって思ったので。 お願いしますm(_”_)m
- imogasi
- ベストアンサー率27% (4737/17070)
VLOOKUP関数の前にISERRORでIF文で、エラーメッセージを表示されるということは、セルの値にエラーメッセージ文字列がセットされてしまいます。普通はそれで苦情がないのですが、それを避けてメッセージだけを出して、値は空白にしたいとなると、VBAでも使わないとできないように思います。 VBAでもWorksheetFunctionでVLOOKUP関数が使えます。 これをユーザー関数の中で使い、エラーを捕らえて、MSGBOXでメッセージを出し(エラー各行で出る)、値は空白を返す。
補足
お答えありがとうございます。 遅くなって申し訳ありません。 VBAですか・・・。今まで使った事ないですね・・・。 うまく組めるかな・・・? 今まではVLOOKUP関数を使用している表を自分専用として使っておりましたが、今作っている表は初めて使う人用に作っておりエラーメッセージをだして上げた方が解かりやすいかと思って下ります。
- Wendy02
- ベストアンサー率57% (3570/6232)
B1: =IF(ISERROR(VLOOKUP(A1,範囲,列番号,0)),"登録されておりません",VLOOKUP(A1,範囲,列番号,0)) というような、IFの論理関数で、分けてみたらいかがですか?
補足
お答えありがとうございます。 =IF(ISERROR(VLOOKUP(A1,範囲,列番号,0)),"登録されておりません",VLOOKUP(A1,範囲,列番号,0)) 確かに"登録されておりません”と表示されるのです、 登録がされているコードを入力しても"登録されておりません”と出てしまってます T-T
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
=if(isNA(VLOOKUP(…)),"登録されておりません",VLOOKUP(…))
- TAK_999
- ベストアンサー率43% (42/96)
データメニューに「入力規則」というのがあります。 ここでセルに入力できる数値の範囲や、範囲外の入力があった場合の エラーメッセージを定義できます。
お礼
遅くなり誠に申し訳ありませんおかげさまで何とかなりそうです。 ありがとうございました。