- ベストアンサー
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で表記しています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>※元の表の曜日はA列の日付に依存して、aaaで表記しています。 これが問題です。表示は曜日ですが、値は日付のままなので。。。 B列の数式を =A1 から =TEXT(A1,"aaa") にして実行してみてください。
その他の回答 (3)
- kagakusuki
- ベストアンサー率51% (2610/5101)
という条件が、もし、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)
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、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のセル範囲に貼り付けて下さい。