ExcelのSUMPRODUCTで文字の入ったセルをカウントする方法

このQ&Aのポイント
  • Excelの関数SUMPRODUCTを使って、特定の条件で文字の入ったセルをカウントしたい場合、以下のような式を使用します。
  • 式内の各部分の詳細な解説も行っています。
  • 他の方法としても検討できるアドバイスがある場合もあります。
回答を見る
  • ベストアンサー

ExcelのSUMPRODUCTで文字の入ったセルをカウントする方法

Excelの関数SUMPRODUCTを使って、以下のような式で文字の入ったセルを カウントしようとしましたが出来ませんでした。 【式】 =SUMPRODUCT((A!E3:E5000="")*(((A!B3:B5000*1>=U52*1)*(A!B3:B5000*1<=V52*1)))) 【式解説】 =SUMPRODUCT((A!E3:E5000="") ←シート「A」の「E3」から「E5000」の範囲で文字が入っているものをカウント。 *(((A!B3:B5000*1>=U52*1) ←「U52」は当週の開始日。(7月1日) シート「A」の「B3」から「B5000」の範囲でこの日付より大きい日を条件にする。 *(A!B3:B5000*1<=V52*1)))) ←「U52」は当週の終了日。(7月7日) シート「A」の「B3」から「B5000」の範囲でこの日付より小さい日を条件にする。 【やりたい事】 ・シートAのE3からE5000の範囲の列で、文字が入ってるセルをカウントしたい。 ・日付の範囲を7月1日~7月7日(週)に指定したい。 この関数でどこを直せばいいでしょうか? 又、他にこうすればいい等アドバイスがありましたら 宜しくお願い致します。

noname#101704
noname#101704

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

> =SUMPRODUCT((A!E3:E5000="") ←シート「A」の「E3」から「E5000」の範囲で文字が入っているものをカウント。 ="" では何も表示されないセルをカウントしてしまいます。 =SUMPRODUCT((A!E3:E5000<>"")*(((A!B3:B5000>=U52*1)*(A!B3:B5000*1<=V52))))

その他の回答 (3)

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

文字列の入っているカウントは次の式で求めることができます。 =SUMPRODUCT((A!E3:E5000>"*")*(A!B3:B5000>=U52)*(A!B3:B5000<=V52)) なお、日付の範囲を7月1日から7月7日(週)に選択したいの意味が分かりません。単に7月1日に6日を足す意味ですか?それならV52の代わりにU52+6でよいのですが?

noname#101704
質問者

お礼

解答ありがとうございます。 解決しました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> 結果は空白のセル、文字の入ったセル、その全てがカウントされました。 =SUMPRODUCT((A!E3:E5000<>"")*(((A!B3:B5000>=U52)*(A!B3:B5000<=V52)))) として全部がカウントされた? 4998が返ったということですか? A!E3:E5000<>"" としているのですからE3~E5000の範囲の空白セルがカウントされるはずはないです。 あなたのしたいことは ・シートAのE3からE5000の範囲の列で、空白以外のセルのうち、B列にある日付がU52セルの日付からV52セルの日付までに該当する個数でいいんですよね? 日付は、文字列ではなくシリアル値ですね?

noname#101704
質問者

お礼

大変申し訳ございませんでした。 こちらのミスで全てカウントされてました。 もう一度確認しながらやってみたら出来ました。 すいませんが、ありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

*1 もいらないようですね。 =SUMPRODUCT((A!E3:E5000<>"")*(((A!B3:B5000>=U52)*(A!B3:B5000<=V52))))

noname#101704
質問者

補足

ご解答ありがとうございます。 早速この式を元に代入してみました。 結果は空白のセル、文字の入ったセル、その全てがカウントされました。 文字の入ったセルのみを数えるまであともう一歩だと思いますので、どうかお知恵を貸していただけると助かります。 宜しくお願い致します。

関連するQ&A

  • SUMPRODUCTにて特定の文字以外をカウントする方法

    Excelの関数SUMPRODUCTにて、特定の文字以外の文字が入ったセルを カウントする方法を探しています。 以下の式に代入、又はこう直した方がいいなどアドバイスがございまし たら宜しくお願い致します。 【式】 =SUMPRODUCT((A!F3:F5000<>"")-(A!F3:F5000,"障害")) 【式の解説】 =SUMPRODUCT((A!F3:F5000<>"") ←F3からF5000で文字が含まれてるセルを指定 -(A!F3:F5000,"障害")) ←F3からF5000で「障害」の文字が含まれていないセルを指定 【やりたい事】 ・F3からF5000で、「障害」以外の文字が含まれてるセルを指定し、  カウントたい 以上宜しくお願い致します。

  • 文字列AかBを含むセル数をSUMPRODUCT関数で求める場合

    文字列AかBを含むセル数をSUMPRODUCT関数で求める場合 エクセル2000です。 A1:A10のセル範囲だとして =SUMPRODUCT(ISNUMBER(FIND({"A","B"},A1:A10))*1) とすると、同一セルにA、Bの両方があった場合、重複してカウントされてしまいます。 重複を除外するために、 =SUMPRODUCT(ISNUMBER(FIND({"A","B"},A1:A10))*1)-SUMPRODUCT(ISNUMBER(FIND("A",A1:A10))*ISNUMBER(FIND("B",A1:A10))) と、重複してカウントされた数から両方が存在するセルの数を減じて求めましたが、以下のようなより簡素な式でも求められことがわかりました。 =SUMPRODUCT((ISNUMBER(FIND("A",A1:A10))+ISNUMBER(FIND("B",A1:A10))>=1)*1) この式でなぜAB両方があるセルが重複カウントされないのかどうもわかりません。 ご教示いただければ幸いです。 なお、SUMPRODUCTではなく =SUM(COUNTIF(A1:A10,{"*A*","*B*"}))-SUM(COUNTIF(A1:A10,{"*A*B*","*B*A*"})) でもできることは存じておりますが、今回はSUMPRODUCTの疑問として質問いたしました。

  • エクセル 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関数のどの部分で条件付ければ良いか解りません。 説明下手で大変申し訳ございませんが、ご助力いただければ幸いです。 

  • Excelの特定の日付の特定の文字のカウント

    ExcelのセルのA1~A10に日付が入っていて B1~B10に文字(田中・山田・伊藤等)が入っています。 日付は6/1~7/31まで入っており、Bの15に計算式に計算結果を出したいです。 6月の田中の合計を出すとすると、どのような式を作ればよいでしょうか。 範囲指定を変えれば、それぞれできますが、増減が激しいので できれば、全てを選択してしまい、計算式でカウントをしたいです。 =COUNTIF(B1:B10,"田中") で田中がカウントで切ることくらいは分かっていますが、 ほとんど数式はつかったことがありません。 どなたかご回答を宜しくお願い致します。 できるだけわかりやすく回答をしていただけると、非常にありがたいです。 宜しくお願い致します。

  • エクセルでセルをカウントしたい!

    エクセルを使ってある言葉が出てくるセルの数をカウントしたいと 思っています。 たとえば一つのセル、 Aの1に「言葉の数を数えます。」 と文字がはいっていたとして、 これを=COUNTIF(A1:A1,"*数*")とすれば、 出てきた個数ではなく、セルの数として 「1」と返ってくると思います。 これを応用して、 Aの1に「数」と入力されていて、 Bの1に「言葉の数を数えます。」が入っていて、 =COUNTIF(B1:B1,"*数*")で数えるのではなく、 =COUNTIF(B1:B1,"*A1*")としてAの1の文字を 認識させてセルの数をカウントしたいんです。 しかしこれではエラーがでるし、 だからといって =COUNTIF(B1:B1,A1)では0になってしまいます。 どのようにすればA1の文字を参照させセルの数を カウントすることができるでしょうか?

  • Excel関数で特定のセルが空白の場合にカウントするよう設定したい(SUMPRODUCT)

    SUMPRODUCTを使い「A!D3:D10000」のセルが空白の場合、 カウントするよう設定したいのですが方法が分かりません。 設定したい式は以下となります。 【設定したい式】 =SUMPRODUCT((A!D3:D10000>=A!C3:C10000)*(A!F3:F10000<>"")*(A!F3:F10000<>"障害")*(((A!B3:B10000>=U59*1)*(A!B3:B10000*1<=V59))*(A!C3:C10000<>"")) 【式解説】 =SUMPRODUCT((A!D3:D10000>=A!C3:C10000) ←A!C3:C10000よりD3:D10000が大きい場合を指定 *(A!F3:F10000<>"") ←A!F3:F10000が空白じゃない場合を指定 *(A!F3:F10000<>"障害") ←A!F3:F10000障害じゃない場合を指定 *(((A!B3:B10000>=U59) ←A!B3:B10000がU59以上の場合を指定 *(A!B3:B10000*1<=V59)) ←A!B3:B10000がV59以下の場合を指定 *(A!C3:C10000<>"")) ←A!C3:C10000が空白じゃない場合を指定 【やりたい事】 A!D3:D10000のセルが空白の場合、カウントするよう設定したい 以上宜しくお願い致します。

  • SUMPRODUCT複数条件カウントで0が返る

    winXP,office2002 エクセルにて、作業一覧シートから「担当者」と「〆切日」別で進捗一覧を作りたいとおもい、 SUMPRODUCT関数を使用したところ、全て0を返してしまいます。   A     B  1 担当者 山田 2 〆切日 作業数 3 1/7(月) =SUMPRODUCT(((別シート!$F$4:$F$109)="山田*")*((別シート!$G$4:$G$109)=$A3)) 4 1/8(火) =SUMPRODUCT(((別シート!$F$4:$F$109)="山田*")*((別シート!$G$4:$G$109)=$A4)) 5 日付の書式はm/d(aaa)です。 別シートF行は担当者名が入力されております。空欄もあります。 別ソートG行は日付m/d(aaa)が入力されております。空欄もあります。 担当者は連名の場合もあるため、"山田*"にしております。 なお試しに、countifでそれぞれ担当者と〆切日の単条件をカウントすると、正常に結果を返します。 いろいろと検索し、試してみましたが、どうしても0になってしまいます。 どこが間違っているのでしょうか? よろしくお願いします。

  • 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) 特に数式のミスはないと思うのですが どうしても正しい値が入りません。 数式に間違いがあればご指摘いただけませんでしょうか。 また、他に良き方法があればご教示いただけるとありがたいです。

  • 期間を決めてカウントしたいのですが旨くいきません。

    期間を決めてカウントしたいのですが旨くいきません。 色々と試してはいるのですが・・・宜しくお願いします。 例    A    B   1 区分   日付 2 既存  2010/4/20 3 新規  2010/5/1 4 既存  2010/5/5 表示したい事 4月新規 0 4月既存 1 5月新規 1 5月既存 1 SUMPRODUCTで期間の指定をして(4月なら) =SUMPRODUCT((YEAR(B2:B4)=2010)*(MONTH(B2:B4)=4)) COUNTIF分で新規をカウント出来ればと思うのですが…。 =COUNTIF(A2:A4,"新規") 具体的に上記の式を使ってかもしくは別の式を使って作った方が良いのか? ご存知の方がいらっしゃいましたら宜しくお願いします。 ※上記の式は色々と調べてたどり着いた式で二つを組み合わせれば旨く出来ればと思ったのですが・・・。

  • SUMPRODUCTでのブランクカウント方法

    検索しきれず、重複した質問でしたらご容赦ください。 Excelでの関数SUMPRODUCTに関する質問です。 A列        B列          C列 みかん      2011/11/30     2011/11/30 みかん      2011/11/30 みかん      2012/11/30     2011/11/30 みかん      2012/11/30     2012/11/30 上記のような表(10行あるとします)で、A列がみかん、且つ、B列が2011/11/30、且つ、C列が2011/11/30もしくはブランクのものをカウントしたいです。この例だと結果が2となるのを望みます。 =SUMPRODUCT((A1:A10="みかん")*(B1:B10="2011/11/30")*(C1:C10="2011/11/30"))+SUMPRODUCT((A1:A10="みかん")*(B1:B10="2011/11/30")*(ISBLANK(C1:C10))) 色々試したのですが、この式考えるまでで断念してしまいました。何卒ご教示下さい。

専門家に質問してみよう