• 締切済み

関数VLOOKUP IFERRORについて教えてください。

関数VLOOKUP IFERRORについて教えてください。 セル(A1)でドロップダウンリストから会場名を選択。 SHEET2から住所・郵便番号・電話番号等を自動展開させています。 =IFERROR(VLOOKUP(B4,SHEET2!A:E,2,FALSE),"")など SHEET2に該当データがない場合は、SHEET1のセル1に手入力をしたいのですが 入力値が正しくない・・とエラーで返されてしまします。 どうしたら手入力できるようになりますか? ドロップダウンリストの指定がいけないのでしょうか? また手入力したとき、SHEET1のセルA2~A5にも手入力をしたいのですが (これは一応入力できるのですが) 入力と同時に、A2~A5の関数指定が消えてしまいます。 関数を保護したまま入力値を入れる方法はあるのでしょうか? ご回答いただけますようお願いいたします。 エクセル2007で作業中です。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 回答番号:ANo.4です。  前回の回答で、A2セルにドロップダウンリストを設定する際に、Z1セルに入力する値を、元の数式の先頭から「=」を除いた文字列としましたが、それよりも良い方法を見つけました。  まず、同様の方法で、A2セルに、手入力可能なドロップダウンリストを設定するのですが、その際に、Z1セルには次の様な形式の数式を入力して下さい。 ="元の数式"  例えば、A2セルに入力されていた元の関数が =IF(A1="","",A1&" ") だとした場合には、 Z1セルには、 ="=IF(A1="","",A1&" ")" という数式を入力する訳です。  すると、A2セルのドロップダウンリスト中には、 =IF(A1="","",A1&" ") という項目が表示されますから、それを選択しますと、A2セルには =IF(A1="","",A1&" ") という文字列データが入力されます。  文字列データのままでは関数として動作しませんから、上記の文字列データをドロップダウンリストで入力してから、A2セルをダブルクリックして下さい。  次に、キーボードのEnterキーを押すか、又は他のセルをクリックすると、 =IF(A1="","",A1&" ") とキーボード入力したのと同じ状態となりますから、関数として動作する様になります。  この方法ならば、複数の数式や値を簡単に入れ替える事が出来ると思います。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 入力規則でドロップダウンリストを設定しているセルに、リストに無いデータを入力するには、前もってそのセルを選択してから、次の操作を行われると良いと思います。 メニューの[データ]をクリック   ↓ 現れた選択肢の中にある[入力規則]をクリック   ↓ 現れた「データの入力規則」ウィンドウの[エラーメッセージ]タグをクリック   ↓ 「無効なデータが入力されたらエラーメッセージを表示する」と記されている箇所をクリックしてチェックを外す   ↓ 「データの入力規則」ウィンドウの[OK]ボタンをクリック  これでリストに無いデータも入力可能になると思います。 >SHEET1のセルA2~A5にも手入力をしたいのですが (中略) 関数を保護したまま入力値を入れる方法はあるのでしょうか?  例えば、A2セルに入力していた関数から、先頭の「=」を除いた文字列を、適当なセル(例えばZ1セル)に入力しておきます。  続いて、先程説明した方法と同様の方法で、リストに無いデータを入力可能にした入力規則を設定し、ドロップダウンリストの「元の値」欄には、 =$Z$1:$Z$1 と入力しておきます。  同様にA3~A5セルにも、同じ結果を出力する関数を入力したセルを作成し、ドロップダウンリストに設定しておきます。  すると、手入力が可能になりますし、関数に戻す際には、ドロップダウンリストに表示される唯一の値を選択してから、その文字列の先頭に「=」を追加すれば、元の関数に戻す事が出来ます。

  • FEX2053
  • ベストアンサー率37% (7987/21354)
回答No.3

「データの入力規則」の「設定」タブ、「ドロップダウンリストから選択する」にチェックが入ってませんか? 外せば手入力で入りますが、そもそも「入れちゃいけない」のでそう言う設定を作っている筈、なんでそうなっているかをよく考えてから外して下さい。 更に「計算式を保持したままデータを手入力することは仕様上不可能」です。ですので、手入力するセルと、データを計算するセルは別の場所に作る必要があります。 いずれにせよやろうとしていることは、そのシートを設計したときの条件の「想定外」のデータです。何かいじると全然違う場所に影響が出てくる可能性が大きいので、全く別のシートで1から処理するロジックを組み込むか、例外データは別途ハンドで処理するように考えた方が正解です。特に金銭がからんでいる場合、どこかで計算が狂うと大変なことになりますよ。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

>SHEET2に該当データがない場合は、SHEET1のセル1に手入力をしたいのですが >入力値が正しくない・・とエラーで返されてしまします。 ⇒入力規則で規制されているので入力はできません。しかし、入力規則のエラーメッセージタブでスタイルを停止以外にすれば入力が可能となります。   リストにないデータ入力をすること自体が矛盾しています。 >また手入力したとき、SHEET1のセルA2~A5にも手入力をしたいのですが >(これは一応入力できるのですが) >入力と同時に、A2~A5の関数指定が消えてしまいます。  ⇒あたり前です。   マクロ(VBA組み込み)でないと不可能です。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

ご質問の意味がよく理解できないのですが少なくともセルに式を入力してあるときにその式を消去させないで別のデータをそのセルに入力することはできません。

関連するQ&A

  • エクセル VLOOKUP関数IFERRORと組み合

    ExcelのVLOOKUP関数でエラーのときは空白にする方法で紹介されているモノに セルに「=IFERROR(VLOOKUP(D2,A2:B6,2,FALSE),"")」を入力して、Enetrを押します。 とありますが、この場合、VLOOKUP関数の前に、実際にキーボードで=IFERRORと打ち込みますか? 簡単にできる方法があれば教えて下さい。

  • INDIRECT関数とVLOOKUP関数について

    ざっくりとしたものに作り直しておりますが、図のようなExcelのシートを作成しています。 「科目」の欄にはINDIRECT関数を利用したリストを作成しており、 E列のセルに、科目で選択したシート分のドロップダウンリストが表示されるようになっています。 今回、頭を悩ませているのは、B列のセルに「業者名」を入力するのですが、 INDIRECT関数を利用している各シートには担当業者が入力されているので、 E列にリストから商品を選択したら、担当業者が自動的に入力されるような関数ができないものか、 というものです。 ちなみに、 =IF($M$1="生活用品",VLOOKUP($E5,生活用品一覧!$B$2:$D$255,2,FALSE),"") という関数を試しに入れてみたら、当たり前ですが、「科目」が”生活用品”となっているときだけ 対応できるのですが、科目が変わってしまったら使えません。 検索の仕方が悪いのか、そもそもそんなことはできないのか。 どなたか教えて頂けたら大変助かります。 宜しくお願い申し上げます。

  • Vlookup関数で検索結果がエラーになってしまう

    お世話になります。 Vlookup関数の質問となります。 =VLOOKUP(C2,Sheet2!$A$2:$E$685,1,FALSE) 検索値  →リストを使用(元データはSheet2の指定したセル範囲の表の2列目のデータ) 範囲 →Sheet2の特定のセル範囲 列番号 →1(ここは100-01、100-02などの番号が入力されています) 検索方法 →false(完全一致) この式で「#N/Aエラー」が発生してしまいます。 単純に「氏名」から「社員番号」を引っ張りたいだけなのですが、 なんでエラーになるのでしょうか? 範囲に指定した表には空白行はありますが、書式設定などは特に問題はないです。 恥ずかしい質問なのは十分に理解していますが、 教えて頂きたく思います。 よろしくお願い致します。

  • vlookup関数

    vlookup関数 book1に犬シートと猫シート、結果シートがあるとします。 犬シートのA1セルに"イヌ"というデータがあり、 猫シートのC1~C9セルに"ネコ"、C10セルに"イヌ"というデータがあります。 で、結果シートのA1セルに、 =VLOOKUP(犬!A1,猫!C1:C10,1,FALSE) という関数を入力すれば結果として"イヌ"が表示されると 期待したんですが、#N/Aとなってしまいます。 どうすればいいんでしょうか。

  • 関数の先頭にIFERRORが有る式

    WINDWS7、エクセル2013です。 ウィザードでしか式を作成したことがなく 他人の作成したエクセル内の関数で疑問が有ります。 1. =IFERROR(VLOOKUP(A1,Sheet2!A$1:H$100,3,0),"") と 2. =IF(A1="","",VLOOKUP(A1,Sheet2!A$1:H$100,3,FALSE)) では何が相違するのでしょうか? 最初の1の方は、式の( )内はセルにカーソルを置いて fxをクリックしてVLOOKUPを選び、ウィザードどうりに 進めてできた式のままで、 もしも検索できなかったら空白にしたい為に 前後にIFERRORと""を加えただけで( )内は よく見る普通の式でわかりやすいです。 後の方の2は、何をしたくてこういう式になっているのかわかりません。 同じく 3. =IFERROR(AVERAGE(B2:K2),"") と 4. =IF(ISERROR(AVERAGE(B2:K2)),"",AVERAGE(B2:K2)) では何が相違するのでしょうか? こちらも同様で 最初の3の方は、式の( )内はセルにカーソルを置いて fxをクリックしてAVERAGEを選び、ウィザードどうりに 進めてできた式のままで、 もしも範囲内に値が無ければ空白にしたい為に 前後にIFERRORと""を加えただけで( )内は よく見る普通の式でわかりやすいです。 後の方の4は、何をしたくてこういう式になっているのかわかりません。 よろしくお願いいたします。

  • vlookupに、Indirect と Match 関数を組み合わせる

    vlookup関数で、検索値にSheet1(Book1)から、範囲は、Sheet2(Book1)のセルにある名前のついているSheet1(Book2), そして、列番号は、指定した名前とマッチするSheet1(Book2)の列番号から、導き出そうとしています。 ところが、Matchで指定した範囲は、Indirect内の関数として認識されないようで、結果が得られません。 たとえば、 Book1のA1~E1にタイトルが入っています。(Index, Title, Book, Author, Frequency) Book2には、 シート1: InputName シート2: Output シート2に以下の関数を入れてみましたが、うまくいきません。 ちなみに、VLOOKUPの列番号を Match関数の代わりに、5 とすると、結果オーライですが、Book1 の列順が変わっていることがあるので、Matchを使ってエラーを避けたいのですが、以下の関数のどこを直すべきでしょうか? =IF(ISNA(VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)),0,VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)) よろしくお願いします。

  • VLOOKUP関数をIFで条件付けしたのですが。。

    シートが2枚あり1枚は名簿シートです。 別シートのセルA1に名簿シートのコード番号を入力し セルA2にVLOOKUP関数で式を下記のように入れています。 =VLOOKUP(A1,名簿!N:P,3,FALSE) このとき値がブランクになるときがあるので そのときは隣の列から数値を拾い出したいのです。 そこで =VLOOKUP(A1,名簿!N:Q,4,FALSE) だと思うのですがですが、自分でIFで式を組んだら =IF(VLOOKUP(A1,名簿!N:P,3,FALSE)="",VLOOKUP(A1,名簿!N:Q,4,FALSE),VLOOKUP(A1,名簿!N:P,3,FALSE)) となりました。 一応、希望通りの答えが返されるのですが、 もっと簡潔な組み方はあるのでしょうか?? IFでなくても何か方法があるのでしょうか?? よろしくご教授お願いします。

  • VLOOKUP関数 正しい値が返されない

    sheet1にデータリストを入力、sheet2のA1にコード番号を入力し以下の表にSheet1の対象データを参照するというところ(VLOOKUP関数のみ)まではよかったのですが、元データに空欄の時は「データなし」と表示過去の質問を参照して下のような式に変更しました。 =IF(ISERROR(VLOOKUP($A$1,範囲,列番号,"")),”データなし”,(VLOOKUP($A$1,範囲,列番号,FALSE))) はじめは正しく表示はされたのですが、A1に違う値を入力し直しても値が変化しません。 エラー表示はでませんが、数式がどこか間違っているのでしょうか。 どなたかお知恵をお貸しください。

  • エクセル 関数 ISERROR VLOOKUP

    エクセル関数でご教授お願いします。 今「LIST」シートのA列に品番、B列に単価が入力されています。 これを「入力」シートのA列1行目に品番を入力して、B列1行目に単価を引っぱってくる関数を作りました。 以下関数です。(「入力」シートのB列の関数です) =IF(ISERROR(VLOOKUP(A1,LIST!$A$1:$B$3,2,FALSE)),"品番ミス",VLOOKUP(A1,LIST!$A$1:$B$3,2,FALSE)) 品番が間違っている場合は”品番ミス”と入力されます。 この状態で問題なのは、入力シートのA列に何も入力されていない時に、B列に品番ミスと入ってしまう事です。 何とか、空白にしたいのですがいい方法はありませんでしょうか?

  • VLOOKUP関数についての質問です。

    VLOOKUP関数についての質問です。 例えば、シート1に、 A列    B列  C列 番号  品物  送り先 1   ばなな スーパー 2   ミカン 学校 3   イチゴ ケーキ店  あるとします。 VLOOKUP関数を用いて、 シート2に A列    B列 送り先  品物 ・   ・ ・   ・ ・   ・ とそれぞれ入力したいとして、以下のセルも同様の式を使い入力しますが いちいち式を立てて入力していくと大変です。 セルにVLOOKUP関数をコピーして使うにはどうしたらいいですか?? お願いします。

専門家に質問してみよう