• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:if文+v lookupの組み合わせエラー)

if文+v lookupの組み合わせエラー

このQ&Aのポイント
  • 数値と本数を入れる表とvlookupの参照元の表があります。
  • if文とvlookupを組み合わせて、中国産または国産の場合にそれに対応する数字を計算したいです。
  • しかし、指定した式を入れると正しくないというエラーメッセージが表示されます。なぜでしょうか?

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.6

>エクセルさんのサジェスチョンは  [真の場合] と [ ]となっていたのでそうしました。 [真の場合]と表現してあるのは[]内の「値または数式」と言う意味になります。 正しい数式を組み立てるには数式バーの左に有る関数の挿入ボタン(fxボタン)をクリックしてウィザードに入力することで確定前にエラーの有無を確認できます。 IF関数の場合は貼付画像のようになります。

KAIJI-000
質問者

補足

画像と赤線まだ挿入して頂いて恐縮です!!

その他の回答 (5)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.5

>下記の式を入れたら”名前は正しくありません”と出ました。なぜでしょうか? Excel 2013で検証してみました。 提示の数式を入力すると貼付画像のエラーが発生します。 数式の中にIF関数の引数と判断できない記述があり、それを定義された名前と解釈すると命名規則に合わないものであることが原因です。 IF関数の第2引数と第3引数の数式らしき記述を[]で括っているのは何のためですか? 第2引数  [$AD19*(VLOOKUP($AC19, $C33:$D36,2,FALSE))]         ↓       $AD19*(VLOOKUP($AC19, $C33:$D36,2,FALSE)) 第3引数 [$AD19*(VLOOKUP($AC19, $C$28:$D$31,2,FALSE))]         ↓       $AD19*(VLOOKUP($AC19, $C$28:$D$31,2,FALSE)) 上記のように修正すればエラーが無くなります。 しかし、数式中に空白文字が含まれていますので含めないよう習慣づけることをお勧めします。

KAIJI-000
質問者

お礼

解答ありがとうございます。

KAIJI-000
質問者

補足

すみません、エクセルさんのサジェスチョンは  [真の場合] と [ ]となっていたのでそうしました。

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

>C列に数字、D列に文字が入っていてますが と言っている方もおられる様ですが、 >19鉛筆 2 100 中国 の先頭にある19は「セルに入力されている数値」ではなく、おそらく行番号ではないかと思います。  つまり、C19セルに「鉛筆」、D19セルに「2」、E19セルに「100」、F19セルに「中国」と入力されていて、G19セルは空欄で何も入力されていないという事だと思われます。  ですから、ずれているのはC列とD列ではなく、 $AG19=”中国” という、「中国」と入力されているか否かを判定している箇所で参照しているセルを 、AG列のセルとしている事が間違いで、正しくは $AF19=”中国” とすべきだと思います。  従いまして御質問の数式を、少なくとも次の様に変更しなければ正しく動作しないと思われます。 =if($AF19=”中国”, $AD19*VLOOKUP($AC19, $C33:$D36,2,FALSE), $AD19*VLOOKUP($AC19, $C$28:$D$31,2,FALSE))  但しこれだけではAC19セルが空欄である場合や、AC19セルに入力されているのと同じ値が入力されているセルがC列に存在しなかった場合、AD19セルに数値以外のデータ(文字列データ)が入力されている場合、等にはエラーとなってしまいますし、 AF19が「日本」となっていなくとも「中国」以外の値が入力されていたり、空欄となっていたりした場合にも、$C$28:$D$31の範囲から検索された値を使って、AD19の値と掛け合わせてしまいます。  その様な事を防ぐために次の様な関数にされた方が良いと思います。 =IF(AND($AC19<>"",$AF19<>"",ISNUMBER($AD19)), IFERROR($AD19*VLOOKUP($AC19,CHOOSE(MATCH($AF19,{"日本","中国"},0), $C$28:$D$31, $C33:$D36),2,FALSE),""),"")  尚、もし国名の下に続いている「鉛筆」~「マジック」等の品目が並べられている行の範囲が、どの国のデータにおいても同じ行数(御質問の例の場合は「鉛筆」~「マジック」の4行)であると決まっている場合には、 $C$28:$D$31, $C33:$D36等の様に、一々、セル範囲を指定しなくとも、次の様にする手もあります。 =IF(AND($AC19<>"",$AF19<>"",ISNUMBER($AD19),ISNUMBER(MATCH($AF19,{"日本","中国"},0))), IFERROR($AD19*VLOOKUP($AC19,OFFSET(INDEX($C$27:$C$36,MATCH($AF19,$C$27:$C$36,0)),1,,4,2),2,FALSE),""),"")

KAIJI-000
質問者

補足

長文させて申し訳ないです。それは行番号でした。すみません。

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

 出たのは ”名前は正しくありません” 以外にも有った筈です。 "-名前の先頭が、英数字、ひらがな、カタカナ、漢字、またはアンダースコアではありません。" "-名前に空白またはほかの無効な文字が含まれています。" "-名前゛Excelの組み込み名またはブック内の他のオブジェクト名と競合しています。" という表示は現れていませんでしたか?  質問者様の関数式には [ と ] という2種類の無効な文字が含まれているため、Excelに受け付けられなかったのです。

KAIJI-000
質問者

お礼

回答有難うございました。

KAIJI-000
質問者

補足

省略してすいません。ただ、皆さんに指摘されるまで、どれを指摘していたのかさっぱり見当が付かなかったのです。エクセルの野郎がIF(論理式、[真の場合], [偽の場合])と提示しやがったんで!

  • aokiii
  • ベストアンサー率41% (63/151)
回答No.2

if($AG19=”中国”, [$AD19*(VLOOKUP($AC19, $C33:$D36,2,FALSE))], [$AD19*(VLOOKUP($AC19, $C$28:$D$31,2,FALSE))]) ではなく IF($AG19="中国", ($AD19*(VLOOKUP($AC19, $C33:$D36,2,FALSE))), ($AD19*(VLOOKUP($AC19, $C$28:$D$31,3,FALSE)))) としてください。 Excelは数式中の大括弧中括弧小括弧を区別できません(配列数式に自動で付く中括弧は別)ので、質問の大括弧は名前の一部として認識しているようです。

KAIJI-000
質問者

お礼

思い通りいけました。有難うございます。

KAIJI-000
質問者

補足

そうだったんでんすね。if文入れる時にエクセルが提示するのが [ ] だったもんで、わかりませんでした。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

>下記の式を入れたら”名前は正しくありません”と出ました。 []を使ってるからでしょう。EXCELでは、検索以外では[]は使いません。 あと、VLOOKUPの参照の列が間違えてます。 C列に数字、D列に文字が入っていてますが、 名称で検索して数字を計算に使うのなら、 C列とD列を入換えないと、見つからないとして#N/Aエラーになります。

KAIJI-000
質問者

補足

すいません、C列は行番号です。紛らわしくてすいません。実際は数字は商品の右に入ってます。

関連するQ&A