• ベストアンサー

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% (7418/18948)
回答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/8248)
回答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

  • エクセル関数SUMPRODUCTについて

    エクセル2000です。 A列とB列の和にC列を乗じたものの合計は、 =SUMPRODUCT(A1:A10,$C$1:$C$10)+SUMPRODUCT(B1:B10,$C$1:$C$10) または =SUM(SUMPRODUCT(A1:A10,$C$1:$C$10),SUMPRODUCT(B1:B10,$C$1:$C$10)) のような長ったらしいものになるのでしょうか? =SUMPRODUCT((A1:B10)*C1:C10) は、表中に文字列が入る場合があるのでエラーになります。 ご教示いただければ幸いです。

  • エクセル SUMPRODUCT関数について教えてください

    エクセルで作成した表から ○○かつ●●のデータ個数を求めたく、 SUMPRODUCT関数を こちらで調べておりましたが どうしても解決しない部分があります。 どうぞ よろしくお願いいたします。 下記8桁数字は、日付です。 カウントしたい数は、B列(終了)が、A1セルに入力された年月かつ、区分(C列)が「A」の数です。 =SUMPRODUCT((LEFT(B2:B100,6)=A1)*(C2:C100="A")) こちらで、『B列=A1セル かつ C列="A"』のみのカウントは出来たのですが、 終了延長(D列)が空欄でない場合は、D列日付データの方をカウントする。 早期終了(E列)が空欄でない場合は、D列・B列よりも E列を優先し、カウントする。という条件を付けたいのですが、 Sheet1 A1セルに「200810(数を調べたい年月を入力)」 (開始)  (終了)     (区分)  (終了延長)  (早期終了)  A列     B列      C列     D列      E列 20061001   20081001   A    -        - 20070926   20081020   A    -        - 20071102   20081009   A    20081201    - 20080101   20081013   B    -        - 20080208   20081010   A    -        20080210 ・・・ この場合、「2」となるようにです。 IF、OR関数あたりかな と考えておりますが、SUMPRODUCT関数のどの部分で条件付ければ良いか解りません。 説明下手で大変申し訳ございませんが、ご助力いただければ幸いです。 

  • SUMPRODUCT関数の使い方

    A列 aaa aaa bbb bbb ccc ccc と入力して、 「aaa」の個数と「bbb」の個数の合計を求める式を教えてください。 見た限りの答えは、「aaa」が2個、「bbb」が2個で4なのですが B1に 「=SUMPRODUCT(A:A="aaa",A:A="bbb")」 としたのですが、「0」が返ってきてしまいます。 B2に 「=SUMPRODUCT(COUNTIF(A:A,"aaa"),COUNTIF(A:A,"bbb"))」 だと、 4が返ってきますが A列を aaa aaa bbb にすると「3」が返ってきてほしいのに、2になってしまいます。 個数の合計を返す関数式をご教授ください。

  • SUMPRODUCT関数で複数条件適用されない

    Sheet1 A列:日付 B列:注文番号 C列:品名 D列:整理番号 E列:数量 集計 A列:品名 B~AF列:日付(1~31日) 【集計】B~AF列の日付、A列の品名が 【Sheet1】A列の日付、C列の品名と一致したら 【Sheet1】E列の数量を【集計】の該当するセルに抽出する 式をSUMPRODUCT関数で作成しました。 例)10/1 りんご 20 【集計】B3セルに以下の数式を入れましたが なぜか数量が「0」のままになります。 =SUMPRODUCT('Sheet1'!$A$3:$A$200='集計'!B$2)*('Sheet1'!$C$3:$C$200="りん ご")*('Sheet1'!$E$3:$E$200) 特に数式のミスはないと思うのですが どうしても正しい値が入りません。 数式に間違いがあればご指摘いただけませんでしょうか。 また、他に良き方法があればご教示いただけるとありがたいです。

  • SUMPRODUCTについて

    おはようございます。 A列に日付(H17.6.5)あるいは空白 B列に1あるいは2 C列に1~1000 A列に日付が入り、かつB列に1が入力されている 箇所のC列の数字の合計を出したいために、 SUMPRODUCTを使おうと思うのですが、 A列の日付の入った場合の数式の立て方が分かりません。 どうかよろしくお願いします。

  • エクセル関数(SUMPRODUCT関数で空白表示をしたい!)

    QNo.2876482に関連してしまいますが、解決しきれないまま自分で締め切ってしまったので、新規で質問させて頂きます。 「A列に商品名、B列にNET(g)、C列に単価の入った単価表があります。 その単価表を範囲選択して、別の表の規定の列にA列の商品名と B列のNET(g)が合致すればC列の単価が返されるという計算式を作りたいと思っています。 VLOOK関数を使えばできるのかと考えましたが、数式の作り方が分かりません。 教えて下さい。」 というのが、QNo.2876482 の私の質問でした。 回答頂いた方の中から、 =SUMPRODUCT(($A$2:$A$3=E2)*($B$2:$B$3=F2)*($C$2:$C$3)) 別途参照表 -- A ------ B ---- C -- 1. 商品名--- (g) -- 単価 2. -- i ---- 100 --- 50 3. -- p ---- 50 ---- 100 元の表 ---- E ------ F --- G --- 1. - 商品名 -- (g) - 単価 2. --- i ----- 100 3. --- p ----- 50 4. --- p ----- 120 5. --- i ------ 200 と、ご指導頂き、解決しました。 解決できたのでご回答を締め切ったのですが、空欄表示にしたい場所(例えばG5まで入力しているが、表はG50まであり、G6~G50にも計算式を入れておきたい)に0と表示されます。 その時にはif関数を使うような書き方をされていたのですが・・・ その計算式を教えて下さい。お願いします。

  • SUMPRODUCT関数について

    こんにちわ! 以前にSUMPRODUCT関数を教えていただいたのですが、またわからないポイントが出てきてしまいましてどなたかお教えください。 【例】     A列     B列    C列 1    担当者  オーダー日   カテゴリ 2   A子   2007/9/5   b a 3   B美   2007/9/6   cd 4   C男   2007/9/7   cg 5   D輔   2007/9/7   cv 6   E司   2007/9/5   ca 7   A子   2007/9/7   cv 8   ・      ・     ・ 9   ・     ・     ・ そして別の場所<A12>に 昨日のオーダー =TODAY()-1 という計算用の式を作成し、 次のような式を作成しました。 【式1】 SUMPRODUCT(($A$3:$A$10="A子")*((TEXT($B$3:$B$10,"ymd")=TEXT($A$12,"ymd"))*($C$3:$C$10="cv"))) さらに検索したい項目があり、最初次のように式をまず作成してみました。 【式2】 =SUMPRODUCT(($A$3:$A$10=""A子"")*((TEXT($B$3:$B$10,""ymd"")=TEXT($A$12,""ymd""))*($C$3:$C$10=""cv""))) +SUMPRODUCT(($A$3:$A$10=""A子"")*((TEXT($B$3:$B$10,""ymd"")=TEXT($A$12,""ymd""))*($C$3:$C$10=""ca""))) +SUMPRODUCT(($A$3:$A$10=""A子"")*((TEXT($B$3:$B$10,""ymd"")=TEXT($A$12,""ymd""))*($C$3:$C$10=""ba"")))" 『長い!』と思い、この式を短くしようと、 【式3】 SUMPRODUCT(($A$3:$A$10="A子")*((TEXT($B$3:$B$10,"ymd")=TEXT($A$12,"ymd"))*(OR(($C$3:$C$10="cv"),($C$3:$C$10="ca"),($C$3:$C$10="ba"))))) という式を作成したところ全然ダメでした。 【式2】を簡素化することは可能でしょうか? どうぞ宜しくお願いします。 余談として・・・ 更に、もし可能であれば、他の関数と組み合わせるにはどこに気を付けたらよいのでしょうか?たとえばAND・IF・VLOOKUPなど ・・・こちらはただの興味ですのでご返答は無くてもかまいません。

  • SUMPRODUCT関数について

    SUMPRODUCT関数を使って「タテ100行ヨコ10列のデータの入った表」からA1*B1+A2*B2+A3*B3+……+A99*B99+A100*B100の計算と A1*C1+A2*C2+A3*C3+……A99*C99+A100*C100というように10列共計算しました。 さらに各々の掛け算の結果を小数点以下を切り捨てたいのでTRUNC関数を使おうと思いましたが上手くできません。 他の関数でも良いのですが良い知恵をお貸しください。

  • エクセル SUMPRODUCT関数でこんな場合は?

    Excel2000です。 添付画像のような表があります。 A列、B列に数値、C列に文字列です。 A列の数値は単なる数値ではなく、計算式で求められています。 したがって表内A列の何も表示されていないセルは、計算の結果 ="" になったものです。 B列の数値は直接入力した単なる数値です。 この表で仮に、C列がAの場合のA列合計を求めるため、D6に =SUMPRODUCT((A1:A5)*(B1:B5)*(C1:C5="A")) としてみましたが、="" を乗じているためVALUEエラーになります。 =""を排除しようと、 =SUMPRODUCT((A1:A5<>"")*(A1:A5)*(B1:B5)*(C1:C5="A")) としてみましたが、やはりVALUEエラーになります。 こういう場合はどうしたらよいのでしょうか? ="" を =0 に変えるという回答以外でお願いいたします。

  • 【SUMPRODUCT】について

    下記リストと条件で価格を算出したいのですが、A列の「7」以外の数字まで反映された値がかえってきてしまいました。適切な関数を使用しているかも不明です。 アドバイスのほどお願いいたしますm( _ _)m --------------------------------------------------------------- セル A列 B列 C列 D列 E列 1 5 A リンゴ店 TEL \100 2 5 B ミカン店 FAX \200 3 7 C リンゴ店 TEL \100 4 7 A ミカン店 FAX \200 5 7 B リンゴ店 TEL \100 6 7 C ミカン店 FAX \200 --------------------------------------------------------------- <条件> A列 「7」 B列 「B」と「C」 C列 「ミカン」を含む D列 「FAX」以外 <作成した数式>(かえってきた値は上の条件とは相反したデータで、恐らくA列の「7」以外の数字も含んでいるようです・・) =SUMPRODUCT((A$2:A$10=7)*(B$2:B$10="B")*(B$2:B$10="C")*(E$1:E$10)) +SUMPRODUCT((A$2:A$10=7)*ISNUMBER(FIND("ミカン",C$1*C$10))*(E$1:E$10))+SUMPRODUCT((A$2:A$10=7)*ISERROR(FIND("FAX",D$1:D$10))*(E$1:E$10)) 以上、質問が長くなってしまい申し訳ありません。 ご教授のほどどうぞ宜しくお願いいたします。

専門家に質問してみよう