- ベストアンサー
VLOOKUP関数について質問した結果、セルにはFALSE、範囲中のセルの文字列、および#N/Aが出てきてしまいます。質問の回答をまとめました。
- VLOOKUP関数について質問した結果、セルにはFALSE、範囲中のセルの文字列、および#N/Aが出てきてしまいます。
- 質問回答として、以下のような結果が得られました。
- 材料一覧がMNOP列とRSTU列とWXYZ列にあります。M,R,WがコードNO.で、N,S,Xが材料名。O,T,Yがg単価で、P,U,Zが商品単価です。表を作るための関数式を提供してください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
前回の答えで文字が表示されたとのことですが式そのものは間違っていないと思いますね。 今回も全く同じ考えの式で対応できますね。 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),"")))))
その他の回答 (3)
- popuplt
- ベストアンサー率38% (31/81)
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)
列全体を指定すると材料一覧が別シートでも分かりやすいでしょう。 (下記例は、材料一覧同シートです) =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),"未登録")))) 以上です。
お礼
ありがとうございます。 ベストアンサーがおひとりにしか出せないのが本当に残念です。 もうひと方の次に入力してやってみましたら 思い通りでした。 言葉で入力すれば、この方法でも問題解決されるのですね。 大変参考になりました。 本当にありがとうございました。 実はもうひと1つ知りたいのですが、 材料一覧の表で、同じ表が各シートにコピーしてあるのですが マスターシートで材料一覧の内容を変更したら、同時に各シートの内容も変更されるようにしたい場合はどうしたらよいのでしょうか? これはマクロの機能を使うということでしょうか? お礼の欄でありながら、また別の質問をして申し訳ありません。
補足
ありがとうございます。 こんなに短い数式で表せるのですか? 明日、さっそくやってみてもう一度お返事させてください。
- popuplt
- ベストアンサー率38% (31/81)
>材料コード表が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),"") 作業列を使いたくないなら「名前の定義」で処理するのもありかも?
補足
回答ありがとうございます。 ちょっと、理解ができなくて申し訳ないのですが 作業列というのは、3行で1つのかたまりと考えるのですか? C9で作った数式をC10以下にコピーして C9,C10…と次々コードを入力して列ごとに原価を出して1つの表を作り そこで出てきた原価を最終的に足して、その材料を使って作ったものの製品原価を 出したいのですが… 結局、C9にどんな式を入力するかよくわからないのですが… すみません、もう一度教えて下さい。
お礼
ありがとうございました。 教えていただいた数式を入力したら思い通りの結果となりました。 数式の意味を調べて、今度は自分で思い通りの数式を作れるように勉強したいと思います。 本当にありがとうございました。 わからないことだらけなので、また質問させていただきたいと思います。 どうぞよろしくお願いいたします。