VLOOKUP関数について質問した結果、セルにはFALSE、範囲中のセルの文字列、および#N/Aが出てきてしまいます。質問の回答をまとめました。

このQ&Aのポイント
  • VLOOKUP関数について質問した結果、セルにはFALSE、範囲中のセルの文字列、および#N/Aが出てきてしまいます。
  • 質問回答として、以下のような結果が得られました。
  • 材料一覧がMNOP列とRSTU列とWXYZ列にあります。M,R,WがコードNO.で、N,S,Xが材料名。O,T,Yがg単価で、P,U,Zが商品単価です。表を作るための関数式を提供してください。
回答を見る
  • ベストアンサー

VLOOKUP関数について昨日質問しましたyannyannsannです

VLOOKUP関数について昨日質問しましたyannyannsannです。 3名の方から回答いただきありがとうございました。 お返事したかったのですが、パスワードが認証されず、再登録ということになり別のニックネームで登録しなくてはならなくなり、お返事できなくなってしまいました。 ニックネームは変わりましたが、引き続き質問させていただいてもよろしいですか? まず、kagakusukiさん、 早速の回答ありがとうございました。 回答を真似してやってみましたが、セルにはFALSEと出てきてしまいます。 そして、KURUMITOさん、 こちらはセルに範囲中のある1つのセルの文字列が出てきてしまいます。 最後に、CoalTarさん、 こちらは「#N/A」になってしまいました。 多分上手くいかない原因に別のシートから検索するのが煩わしいので、材料一覧を同じシートに移したからでしょうか。 同じシート上になったので、数式から材料一覧!を省き、同じシートのそれぞれ対応する列文字に入れ替えたのですが、それぞれ3名の方の回答でも上手くいきませんでした。 もう一度、どんな数式を作りたいか実際のシートの列と行で質問したいと思います。 ご回答いただければ嬉しいです。 材料一覧がMNOP列とRSTU列とWXYZ列(3つが同じ形式)にあります。M,R,WがコードNO.で、N,S,Xが材料名。O,T,Yがg単価で、P,U,Zが商品単価です。 この一覧表に基づき表を作ります。C9にM,R,W列のいずれかのコードNO.を入れて、関数式によりDEF(結合)に材料名(N,S,X)が表記される。 更にもう1つの関数式によりI9にg単価が表記される。因みにGH(結合)は分量です。Jは原価です。 分量を入力するとJの原価が出てくる。J9=IF(OR(G9="",I9=""),"",G9*I9)  という、表を完成させたいのです。 材料コード表が1列なら上手くいくのですが、3列となると難しいです。 ご回答いただければ嬉しいです。 よろしくお願いいたします。

質問者が選んだベストアンサー

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

前回の答えで文字が表示されたとのことですが式そのものは間違っていないと思いますね。 今回も全く同じ考えの式で対応できますね。 C9にコードNOを入力してDEFの結合セルに材料名を表示させるにはそのセルに次の式を入力します。 =IF($C9="","",IF((COUNTIF($M:$M,$C9)+COUNTIF($R:$R,$C9)+COUNTIF($W:$W,$C9))=0,"未登録",IF(COUNTIF($M:$M,$C9)>0,VLOOKUP($C9,$M:$P,2,FALSE),IF(COUNTIF($R:$R,$C9)>0,VLOOKUP($C9,$R:$U,2,FALSE),IF(COUNTIF($W:$W,$C9)>0,VLOOKUP($C9,$W:$Z,2,FALSE),""))))) また、I9セルには次の式を入力します。 =IF($C9="","",IF((COUNTIF($M:$M,$C9)+COUNTIF($R:$R,$C9)+COUNTIF($W:$W,$C9))=0,"未登録",IF(COUNTIF($M:$M,$C9)>0,VLOOKUP($C9,$M:$P,3,FALSE),IF(COUNTIF($R:$R,$C9)>0,VLOOKUP($C9,$R:$U,3,FALSE),IF(COUNTIF($W:$W,$C9)>0,VLOOKUP($C9,$W:$Z,3,FALSE),"")))))

yannsann
質問者

お礼

ありがとうございました。 教えていただいた数式を入力したら思い通りの結果となりました。 数式の意味を調べて、今度は自分で思い通りの数式を作れるように勉強したいと思います。 本当にありがとうございました。 わからないことだらけなので、また質問させていただきたいと思います。 どうぞよろしくお願いいたします。

その他の回答 (3)

  • popuplt
  • ベストアンサー率38% (31/81)
回答No.4

No1です。 >作業列というのは、3行で1つのかたまりと考えるのですか? 作業列で[C9]に入力されたコードNOがMNOP列(表1)、RSTU列(表2)、WXYZ列(表3)のどの表にあるかを調べています。作業列はこの数式のために前もって別のセルで計算しているだけですので、どこのセルでもかまいません。3表ありますので、3行で1つのかたまりです。 >結局、C9にどんな式を入力するかよくわからないのですが… [C9]は質問の中で、「C9にM,R,W列のいずれかのコードNO.を入れて」とありますが・・・

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

列全体を指定すると材料一覧が別シートでも分かりやすいでしょう。 (下記例は、材料一覧同シートです) =IF(C9="","",IF(COUNTIF(M:M,C9)>0,VLOOKUP(C9,M:P,2,0),IF(COUNTIF(R:R,C9)>0,VLOOKUP(C9,R:U,2,FALSE),IF(COUNTIF(W:W,C9)>0,VLOOKUP(C9,W:Z,2,FALSE),"未登録")))) また各材料一覧にそれぞれ次のように名前を付けておくと 材料一覧が別シートにあってもシート名を付ける必要はありません。 (同シートでも別シートでも同じ式でOKということです) 果物番号(M)果物(M:P) 野菜番号(R)野菜(R:U) 魚肉番号(W)魚肉(W:Z) =IF(C9="","",IF(COUNTIF(果物番号,C9)>0,VLOOKUP(C9,果物,2,FALSE),IF(COUNTIF(野菜番号,C9)>0,VLOOKUP(C9,野菜,2,FALSE),IF(COUNTIF(魚肉番号,C9)>0,VLOOKUP(C9,魚肉,2,FALSE),"未登録")))) 以上です。  

yannsann
質問者

お礼

ありがとうございます。 ベストアンサーがおひとりにしか出せないのが本当に残念です。 もうひと方の次に入力してやってみましたら 思い通りでした。 言葉で入力すれば、この方法でも問題解決されるのですね。 大変参考になりました。 本当にありがとうございました。 実はもうひと1つ知りたいのですが、 材料一覧の表で、同じ表が各シートにコピーしてあるのですが マスターシートで材料一覧の内容を変更したら、同時に各シートの内容も変更されるようにしたい場合はどうしたらよいのでしょうか? これはマクロの機能を使うということでしょうか? お礼の欄でありながら、また別の質問をして申し訳ありません。

yannsann
質問者

補足

ありがとうございます。 こんなに短い数式で表せるのですか? 明日、さっそくやってみてもう一度お返事させてください。

  • popuplt
  • ベストアンサー率38% (31/81)
回答No.1

>材料コード表が1列なら上手くいくのですが 1列でうまくいくなら、検索用に3表を1つにまとめた作業列をつくればいいと思うのですが・・・ 1案です。 それぞれの表に名前を付けます。 MNOP列=>"表1" RSTU列=>"表2" WXYZ列=>"表3" 数式が長くなるので、作業列(たとえばC10:C12)を使います。 [C10]=IF(COUNTIF(M:M,$C$9),1,0) [C11]=IF(COUNTIF(R:R,$C$9),2,0) [C11]=IF(COUNTIF(W:W,$C$9),3,0) [D9]=IF(MAX(C10:C12),VLOOKUP(C9,INDIRECT("表"&MAX(C10:C12)),2),"") [I9]=IF(MAX(C10:C12),VLOOKUP(C9,INDIRECT("表"&MAX(C10:C12)),3),"") 作業列を使いたくないなら「名前の定義」で処理するのもありかも?

yannsann
質問者

補足

回答ありがとうございます。 ちょっと、理解ができなくて申し訳ないのですが 作業列というのは、3行で1つのかたまりと考えるのですか? C9で作った数式をC10以下にコピーして C9,C10…と次々コードを入力して列ごとに原価を出して1つの表を作り そこで出てきた原価を最終的に足して、その材料を使って作ったものの製品原価を 出したいのですが… 結局、C9にどんな式を入力するかよくわからないのですが… すみません、もう一度教えて下さい。

関連するQ&A

  • VLOOKUP関数の使い方について

    以前コード番号を入力すると自動的に商品番号が出るようにしたいと質問させていただきました。 教えていただいた方法を使い おかげさまでコード番号を入力すると隣のセルに商品番号が出るようになりました。 ただ一緒に単価も入力させたいのですがそれができません。 入力本体は(シート名 「仕入れ表」) E列 コード番号 F列 商品名 G列 数量 H列 単価 I列 小計(G*H) という構成になっています。 (A~C列は他の項目が入っています) 参照するシート名「cade」 同じブック内にあります。 A列コード番号 B列商品名 C列単価 が入っておりA~C列までを名前の定義で 「cade表」としてあります。 「仕入れ表」のI列(小計) の二行目より =IF(E2<>"",G2*H2,"") の数式がコピーしてあります。 同じく 「仕入れ表」のF列には =IF(E2<>"",VLOOKUP(E2,cade表,2,FALSE),"") と数式を入れました。 結果コード番号を入力すると商品名は出ますが 単価は入力されません。 単価も同時に入力する為にはどのようにしたらよろしいでしょうか? どなかた教えていただけると助かります。 宜しくお願い致します。

  • 関数について教えて下さい。

    エクセル2003を使用してます。 商品名と材料名と参照して、関数を使用して商品名の個数を 出したいのですが、やり方がわかりません。 (現在の表内容) シート1 「A2:D9」  に商品名を入力する表があります。 シート1 「F2:I9」  材料の個数を表示する表があります。 シート2 「A2:B10」 に商品一覧表があります。 (例) シート1「F2」のセルの場合。 「F列」に V と言う材料名が入ってます。 「A2:D2」に ● ■ → ●  と言う商品名が入力されました。 シート2の商品一覧表に ● の場合 V の材料を使用するとなってます。 Fの列は、Vなので●の数を入れたいので、 「F2」のセルには2個と関数を使用して入れたいです。 このような事、可能でしょうか? 教えて頂けませんか? よろしくお願いします。

  • vlookup関数についてですが。

    こんにちは。 仕事で使う注文書をエクセルで作っています。 sheet1が注文書本体。sheet2が商品一覧(データベース形式)で左からコード番号(5桁)、商品名、内容量、単価などと並んでいます。 問題は、注文書のsheet1のコード番号を入力する箇所が、セルが5つ横並びで、1セルに1文字づつ入れるようになっています。 そこで、考えたのが注文書の5桁のコード番号を取得するセルを設けそこに(=D18&E18&F18&G18&H18のようにして)5桁のコード番号を取得、そのコード番号に対応するセルをsheet2の商品コードから抜き出し、その横の商品名を、sheet1注文書の商品名をN18に返すようにしました。(=IF(I18="","",VLOOKUP(I18,Sheet2!A2:E400,2,FALSE)) しかし、N18に返ったのは、#N/Aでした。 なぜでしょうか? どのようにすれば、N18に商品名を返すことが出来るでしょうか?

  • VLOOKUP関数とIF関数の組み合わせ

    はじめまして。 質問なのですが、セルに列とサイズを入力して用紙寸法一覧表を参考にして「大きさ」をセルに寸法を表示させる問題に困っています。 ヒントにはIF関数を使うと書かれています。 どなたかお願いできますでしょうか?  A   B   D 2 列   __(下の表から自分で入力) 3 サイズ __ 5 大きさ □ × □ ●用紙寸法一覧表(単位:ミリ)   F    G    H     I     J 2 サイズ  A列       B列 3  0  841  1189 1030 1456 4  1  594  841  728   1030 5  2   420   594   515   728 6  3   297   420   364   515 7  4   210   297   257  364 8  5  148   210   182   257 9  6  105   148   128   182 10  7   74    105   91   128 11  8   52    74    64   91 12  9    37   52   45    64 13  10   26   37   32   45 きちんと説明できているかわかりませんがよろしくお願いします。

  • エクセルの関数VLOOKUPについて教えて下さい。

    エクセルの関数VLOOKUPについて教えて下さい。 範囲にあたるデーター部分が3つのかたまりに分かれている時どのような数式で表すことができますか? 具体的には、HIJ KLM OPQの列位置にある3つの表の中から検索したいのです。 作った数式は1つの表から検索するもので =IF(C9="","",IF(ISNA(VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE)),"未登録",VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE))) です。(C9,材料一覧!$H$5:$J$54,2,FALSE)の後に&(同じ数式で列文字を入れ替えて)で繋げてみました。列範囲KLMの表は上手くいったのですが、3つ目のOPQの表は上手くいきませんでした。 原因と正しい数式を教えて下さい。 よろしくお願いいたします。

  • VLOOKUP関数 列番号の設定の仕方教えて下さい

    VLOOKUP関数の列番号を 1、2、とかではなく、 計算して列番号を設定することはできますか? シート2 に入っているデータを参照して シート1 に関数をいれて、表示させたいと思っています。 シート2 データは 3行目に、項目(品名、(1)材料名、(2)数量、(2)材料名、(2)数量、...、(10)材料名、(10)数量) A列、 B列、 C列、 D列、 E列、...、 M列、 N列 クッキー、小麦粉、100、卵、1、...、砂糖、20 クラッカー、小麦粉、100、米粉、10、...、りんご、0.2 が入っていて、4行目から100行目くらいまでデータがはいっています。 シート1 の セルA5に品名を入力すると、 シート2の(1)材料名がセルA6に、 (1)数量がセルB6に、 (2)材料名がセルA7に、 (2)数量がセルB7に、 ... (10)材料名がセルA15に、 (10)数量がセルB15に、 入るように作りたいのですが、VLOOKUPの列番号を COLUMNやINDEXなど試してみましたが、エラーばかりで うまくできません...VLOOKUPでは無理なのでしょうか? どなたか詳しい方教えてください。よろしくお願いします・

  • エクセルのVLOOKUP関数で…(複数条件?の抽出)

    ●シート2、A列に部品正式名称、B列に部品略称の一覧表(部品の種類は約500点) ●シート3、A列に略称、B,C,D,E,F,G列と続けて寸法などの詳細を記した一覧表 があります。 ●シート1に検索一覧表として、B列(B3~B8)は項目、セルC3~C8にVLOOKUPでシート3の情報が抽出されるようにしてあります。 C1で略称を入力し抽出するのはOKなのですが、正式名称で入力しても同じようにシート3の情報を抽出するようにしたいです。 (IFを使って思いつく関数を組合わせてみたりしたのですが、うまくいきませんでした(TT) できたら関数で何か良い方法ありますでしょうか? 宜しくお願いします。

  • VLOOKUP関数

    うまく質問の内容が伝わるかわからないんですがわかった方は教えてください。 今、会社でVLOOKUP関数を使ってコードを入れると取引先が出るように数式を入力したんですけどどうしてもわからないところがあって質問しました。 取引先一覧表        A         B 1  コードNo.     取引先 2    01        **会社 3    02      ○○商事       :       :      11    10      △△会社 12    11     ▼▼運輸 などと表を作りました。A列は文字列に設定してあります。 別のシートに集計表を作ってコードNo.を入れると取引先が出るようにはなったのですが集計表のコードNo.を入れる列は標準に設定してあり01~09までは「01」と入力しても「1」と出てしまうので検索できず「#N/A」と出てしまいます。 また文字列で設定すると01~09までは出てくるんですが10以降が今度は「#N/A」と出てしまいます。 出来たら集計表のコードNo.も「01」とか頭に「0」をつけたいんですがやり方ってあるのでしょうか?    

  • 【Excel】VLOOKUP関数について

    Excel2003を使用しています。 B列にコードNo.、D列に会社名が入力されている表(1)があります。 表(1)とは別のシートで、B列にコードNo.を入力すると、D列に会社名が表示されるように、VLOOKUP関数で検索範囲を表(1)としてD列に数式を入力しています。 これを逆に、D列に会社名を入力したら、B列にコードNo.が表示されるようにしたいのですが、B列に数式を入力する際、表(1)はこのまま利用できるのでしょうか?

  • エクセルの関数に詳しい方教えてください。

    月の利用料の算定表を作っています。 一部、関数の使用方法がわからない箇所があり、困っています。 わかる方教えてください。よろしくお願いします。 シート1は算定表、シート2は単価表です。 シート1に単価を表示させたいセルがあります。 シート2には列に区分1~5、行には4月~3月の月が入力されている、区分と月に応じた金額(単価)がわかる表を作成しました。 シート1上にシート2に対応する、区分コード(行数)と月コード(列数)を作成して、OFFSET関数を使用して検索したのですが、うまく表示できません。 私としては、 シート1のあるセルに、シート1に入力した区分コードと月コードに対応する、シート2の金額を表示させたいのですが… 使用方法が間違っているのでしょうか? そもそも、使用した関数が間違っているのでしょうか? もしくは、他の関数と組み合わせ使用すればいいのでしょうか? 説明が下手ですみません。こんな内容でも、わかったよ!という方がいらっしゃいましたら、お願いします。

専門家に質問してみよう