• ベストアンサー

SUMPRODUCT関数に関して

A列に日付、B列に曜日、C列に記号が入力されている表から 曜日後との記号の個数を出したい時にSUMPRODUCTを使っていますが、 曜日の表現の仕方が悪いのか、しっかりカウントされません。 解消方法が分からないので、教えていただきたいです。 A列 B列 C列 4/1 金  a 4/1 金  a 4/2 土  p 4/3 日  a 4/3 日  a 4/8 金  e 【作りたい状態】   a e p 金 2 1 0 土 0 0 1 日 2 0 0 ※元の表の曜日はA列の日付に依存して、aaaで表記しています。

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

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

>※元の表の曜日はA列の日付に依存して、aaaで表記しています。 これが問題です。表示は曜日ですが、値は日付のままなので。。。 B列の数式を =A1 から =TEXT(A1,"aaa") にして実行してみてください。

その他の回答 (3)

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

という条件が、もし、B2セルに =A2 などの様な形式の関数を入力しておいて、るの書式設定の表示形式をaaaにする事によって、月~日の曜日を表示させているという事を意味している場合には、次の様な方法も使える事は使えます。 【方法その3】   まず、F2セルに次の関数を入力して下さい。 =SUMPRODUCT(($B$2:$B$7>1)*ISNUMBER(1/(TEXT($B$2:$B$7,"aaa")=$E2))*($C$2:$C$7=F$1))  次に、F2セルをコピーして、F2:H4のセル範囲に貼り付けて下さい。  尚、この場合、単純に =SUMPRODUCT((TEXT($B$2:$B$7,"aaa")=$E2)*($C$2:$C$7=F$1)) としてしまいますと、A列に万が一、マイナスの数等の日付ではない値が入力されていた場合においてエラーとなってしまいます。  又、万が一、「A列やB列が空欄となっているか、0が入力されているかどちらかとなっている行」のC列のセルに記号が入力されていた場合、土曜日のカウント結果の所(F3セル)に誤ったカウント結果が表示されてしまいます。  ですから、SUMPRODUCT関数の中に「($B$2:$B$7>1)」や「ISNUMBER(1/」を入れておいた方が宜しいかと思います。

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

>解消方法が分からないので、教えていただきたいです。 >※元の表の曜日はA列の日付に依存して、aaaで表記しています。 「曜日後との記号」は「曜日毎の記号」の誤りかと思います。 投稿前に読み返すよう心掛けましょう。 数式の添削を依頼するのであれば誤りの数式を提示すべきです。 比較する対象が日付のシリアル値と曜日を表す文字では一致しませんので一致するようにします。 =SUMPRODUCT((TEXT($B$2:$B$7,"aaa")=$E2)*($C$2:$C$7=F$1))

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

 今仮に、A2:C7のセル範囲に 4/1 金  a 4/1 金  a 4/2 土  p 4/3 日  a 4/3 日  a 4/8 金  e と入力されていて、F1:H1のセル範囲にa~p等の記号が、E2:E4のセル範囲に金、土、日等の曜日が入力されているものとします。 【方法その1】  まず、F2セルに次の関数を入力して下さい。 =SUMPRODUCT(($A$2:$A$7>1)*ISNUMBER(1/(TEXT($A$2:$A$7,"aaa")=$E2))*($C$2:$C$7=F$1))  次に、F2セルをコピーして、F2:H4のセル範囲に貼り付けて下さい。 ※「($A$2:$A$7>1)」や「ISNUMBER(1/」を使っているのは、A列に万が一日付ではない値が入力された場合においてもエラーとなったり、誤ったカウント結果が表示されたりしない様にするためです。 【方法その2】  まず、B2セルに次の関数を入力して下さい。 =IF(SUM($A2)<1,"",TEXT($A2,"aaa")) ※単純に「=TEXT($A2,"aaa"))」とした場合、A列に何も入力されていない場合においても「土」と表示されてしまいまので、「IF(SUM($A2)<1,"",」を付けています。  次に、B2セルをコピーして、B3:B7のセル範囲に貼り付けて下さい。  次に、F2セルに次の関数を入力して下さい。 =COUNTIFS($B:$B,$E2,$C:$C,F$1)  次に、F2セルをコピーして、F2:H4のセル範囲に貼り付けて下さい。

関連するQ&A