• ベストアンサー

【エクセル】列指定【A:A】した際の、関数エラー

タイトルの件、質問いたします。 下記の図をご覧ください。 図1より、E2に、1月度の成約件数が、関数により、カウントされています 関数 =SUMPRODUCT((YEAR(A:A)=2013)*(MONTH(A:A)=1)*(B:B="月曜日")*(C:C="成約")) です。 しかし 図2のように 表に、項目【日付、曜日、結果】という、項目をつけると、関数がエラーを表示します。 項目をつけても、上記の指定【A:A】列指定して、カウントできるようにはできないでしょうか? 以上、ご存知の方、いらっしゃいましたら、宜しくお願いします。

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

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

 次の様な関数にされると宜しいかと思います。 =SUMPRODUCT((YEAR(INDEX($A:$A,ROW($A$1)+1):INDEX($A:$A,MATCH(9E+99,$A:$A)))=2013)*(MONTH(INDEX($A:$A,ROW($A$1)+1):INDEX($A:$A,MATCH(9E+99,$A:$A)))=1)*(INDEX($B:$B,ROW($A$1)+1):INDEX($B:$B,MATCH(9E+99,$A:$A))="月曜日")*(INDEX($C:$C,ROW($A$1)+1):INDEX($C:$C,MATCH(9E+99,$A:$A))="成約")) 或いは =SUMPRODUCT(ISNUMBER(1/(YEAR($A:$A)=2013)/(MONTH($A:$A)=1))*($B:$B="月曜日")*($C:$C="成約"))

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

たとえば =SUMPRODUCT((TEXT(A:A,"yyyymm;;;")="201301")*(B:B="月曜日")*(C:C="成約")) といった工夫で計算できます。 もちろん重い(それはあなたが最初に成功した式でも同じですけど)ですけどね。 無駄な列:列をやめて1行目を計算範囲から外すのは当然の措置として,しかしデータ中にイレギュラーに文字列が出てくる(たとえば数式で""を計算しているといった)場合の回避措置としても有効です。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! SUMPRODUCT関数は配列数式になりますので、列全体を範囲指定してしまうと PCにかなりの負担をかけ、計算速度も極端に遅くなります。 SUMPRODUCT関数を使用する場合は範囲を明確に指定してやる方がよいと思います。 さて、SUMPRODUCT関数の「関数の引数ダイアログボックス」を表示させ 配列1の部分に MONTH(A1:A100)=1 と入力してみてください。 この時点で範囲内データが数値以外の行が#VALUE!と表示されてしまいます。 すなわち、Excelがシリアル値だと判断できないデータがあるとエラーになってしまいます。 解決方法としては =SUMPRODUCT((MONTH(A2:A100)=1)*(B2:B100="月曜日")*(C2:C100="成約")) といった感じにするしかないと思います。m(_ _)m

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

SUMPRODUCT関数は一般には範囲を指定して使うものです。列指定ですと計算に時間がかかりますし、今回のようにA列に日付でないデータが入力してある場合にはYEAR(A1:A1)はエラーになりますので当然エラーになってしまいます。 日付の項目が1行目に入っているのですから式は列の指定ではなく下記のように範囲を指定することが必要です。 =SUMPRODUCT((YEAR(A2:A100)=2013)*(MONTH(A2:A100)=1)*(B2:B100="月曜日")*(C2:C100="成約"))

  • akito0417
  • ベストアンサー率20% (55/266)
回答No.1

MONTH関数では判断できない文字列『日付』が含まれているからでしょう。 A:AでA列全部となるので、 A2:A○と範囲を指定すればできると思います。

関連するQ&A