• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SUMPRODUCT関数のエラー)

SUMPRODUCT関数のエラー

このQ&Aのポイント
  • SUMPRODUCT関数を使用している際にエラーが発生しました。VALLE!というエラーが表示されています。
  • エラーの原因として、sheet2のC列が空白や数字で構成されていることが考えられます。
  • sheet2のC列が数字であっても、SUMPRODUCT関数を使用すると結果が0となってしまう問題が発生しています。

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

  • ベストアンサー
回答No.6

例えば、Sheet2 C 列のセルの書式が「文字列」となっているところに数を記入しても、SUMPRODUCT 関数はそれを数値とみなしてくれません。この状態を直すには、「文字列」以外の書式に設定した後、1 列全体を選択して「データ > 区切り位置 > 完了ボタン」と進むと、SUMPRODUCT の返す値が変化していると思います。 他にも、実は各列の行番号が勘違いで少しずれていた、ということはあり得ますね。あるいは、「α」などの文字列中に余計なスペースなどが混入していれば当然、想定どおりの計算結果にはなりません。 試しに、どこか適当な 1 行を選んで、同じ行番号の 3 シート 4 セルに手入力で「α」などを記入していってみましょう。SUMPRODUCT に変化はあるでしょうか? どこに原因があるのか探るため、お示しの数式が記入されているセルにカーソルを置いた状態で、数式タブの「数式の検証」の「検証」ボタンを何回か押してみることをお勧めします。そこで表示される配列を見ると、数えてほしい行については、同じ行番号の 3 シート 4 セルについて、全て TRUE となっているはずです。数式に問題が含まれていないとすればですが。しかし実際は「0」という計算結果になっているなら、4 セル中、少なくとも 1 つは FALSE と表示されているはずです。注意点は、行数が多すぎると表示するのに非常に時間がかかったり、小さなダイアログでは見づらいといった点が不便なので、10 行などの少なくした数式で試してみることです。 とりあえずお示しの 2 式に、数式の記法上の誤りは含まれていないようです。なお 2 本目の数式については、「*1」や「( )」を次のとおり書かなくて大丈夫です。 =sumproduct((sheet1!a1:a100="α")*(sheet2!a1:a100="β")*(sheet2!b1:b100="γ")* (sheet3!a1:a100="δ"),sheet2!c1:c100) 「=」が含まれている各論理式には「*」を付けますが、既に付いていますよね。だから「*1」は不要です。また、「sheet2!c1:c100」の部分には「=」がないため、「*」も「( )」も不要です。 >sheet2C1:C100が空白と数字でできているためかと思い、 理由はそんな感じです。見た目が空白っぽい、空文字列が記入されているセルは文字列なので、掛け算ができないために「#VALUE!」のエラーになりますね。本当の空白(未記入)のセルなら、「0」として扱われるため、エラーにはなりません。

その他の回答 (5)

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.5

#3です。本当に何度もすみません。 引数が足りない、というのは変ですね。当方は大丈夫なのですが・・・ それから、空白(スペース)が入っている時はこれで大丈夫だと思うのですが、逆に空白は空白でも何にも入っていない空白(デリートキーを押した時のような空白)のときにエラーになってしまうみたいです・・・。 お役に立てずにすみません。

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.4

#3です。 すみません。括弧の数は合ってましたね。m(__)m

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.3

#1です。補足を見ました。 =SUMPRODUCT((sheet1!A1:A100="α")*(sheet2A1:A100="β")*(sheet2!B1:B100="γ")* (sheet3!A1:A100="δ")*SUBSTITUTE((sheet2!C1:C100),"",0)) 最後の括弧閉じ ) が一つ足りないような気がしますが大丈夫でしょうか。 それから最後のほうの""は間に空白(スペース)が入ります。" "です。

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

>上記でVALLE!が出てしまいました。 提示された関数式には誤りが見られません。 各配列を評価できるように=SUMPRODUCT((配列1="文字列1")*1,(配列2="文字列2")*1,・・・・)のようにされると誤りが発見し易いと思います。 >どうしたらいいでしょうか? 結果が同じであれば判断すべきブロックを小さくすると点検しやすくなります。 途中経過を評価することも必要かと思います。

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

おっしゃるとおり、sheet2のC列に空白(スペース)が入っているのでエラーとなります。 substitute関数を使ってスペースを0に置き換えればよいと思います。 (sheet2!C1:C100) を、 SUBSTITUTE((sheet2!C1:C100)," ",0) のようにします。 なお、こうするとsheet2のC列が空白の場合は0が返り値となります。

goro_nyan
質問者

補足

ありがとうございます! 早速やってみました。 =SUMPRODUCT((sheet1!A1:A100="α")*(sheet2A1:A100="β")*(sheet2!B1:B100="γ")* (sheet3!A1:A100="δ")*SUBSTITUTE((sheet2!C1:C100),"",0)) としてみましたが、引数が足りないと出てしまいました。 また、 =SUMPRODUCT((sheet1!A1:A100="α")* (sheet2!A1:A100="β")*(sheet2!B1:B100="γ")* (sheet3!A1:A100="δ")*1,SUBSTITUTE((sheet2!C1:C100),"",0)) にすると、やはり0しかでませんでした。 どうしたらいいでしょうか? よろしくお願いします。

関連するQ&A

専門家に質問してみよう