- 締切済み
エクセル 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関数のどの部分で条件付ければ良いか解りません。 説明下手で大変申し訳ございませんが、ご助力いただければ幸いです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 配列数式なら、以下のようにすればよいです。 =SUMPRODUCT((LEFT(B2:B100,6)=TEXT(A1,"000000"))*(C2:C100="A")*(D2:D100&E2:E100<>"")) ----------------------------- データベース関数のDCOUNT なら、以下のようにします。 このように、タイトル行を置き A B C D E 開始 終了 区分 延長 早期終了 2行目にCriteria にこのようなスタイルを取り =AND(LEFT(B2,6)=$H$1,C2="A",OR(D2<>"",E2<>"")) H1 に以下を置き (' シングルクォーテーション)または、数式の中を文字列にする。 '200810 =DCOUNT(A1:E100,B1,Criteria) とすれば、同じように出ます。
- merlionXX
- ベストアンサー率48% (1930/4007)
F列を使い、 =IF(E2<>"",E2,IF(D2<>"",D2,B2)) として下まで式をコピーします。 そして =SUMPRODUCT((LEFT(F2:F100,6)=TEXT(A1,"@"))*(C2:C100="A")) ではどうでしょう。 A1が文字列なら =SUMPRODUCT((LEFT(F2:F100,6)=A1)*(C2:C100="A")) でもいいですが。
お礼
ご回答、アドバイスありがとうございます! 私の質問が言葉足らずですみません。 実は、Sheet1のデータベース部分は 毎回他データから列ごとそのまま貼り付けをしている為 データの横部分に関数等を使用出来ないのです・・・ お教えいただいたご回答は 他の機会に使用してみようと思います。 実は、SUMPRODUCT関数を これは自分のやりたい事に使えそうだ! と 昨日初めて知ったところでした。 色々 勉強になりました。ありがとうございました!
お礼
ご回答、アドバイスありがとうございます! お教えいただきました式、 =SUMPRODUCT((LEFT(B2:B100,6)=TEXT(A1,"000000"))*(C2:C100="A")*(D2:D100&E2:E100<>"")) を使用して イメージしていた感じに出来ました。 A1とA列の左6桁が同じ かつ C列が"A" かつ D,Eどちらも空欄のセルの行数 + A1とD列の左6桁が同じ かつ C列が"A" かつ Eが空欄のセル数の行数 + A1とE列の左6桁が同じ かつ C列が"A" かつ Dが空欄のセル数の行数 + A1とE列の左6桁が同じ かつ C列が"A" かつ D,Eどちらも空欄ではないセル数の行数 =SUM(SUMPRODUCT((LEFT(B3:B100,6)=TEXT(A1,"000000"))*(C3:C100="A")*(D3:D100&E3:E100="")),SUMPRODUCT((LEFT(D3:D100,6)=TEXT(A1,"000000"))*(C3:C100="A")*(E3:E100="")),SUMPRODUCT((LEFT(E3:E100,6)=TEXT(A1,"000000"))*(C3:C100="A")*(D3:D100="")),SUMPRODUCT((LEFT(E3:E100,6)=TEXT(A1,"000000"))*(C3:C100="A")*(D3:D100<>""))) というような感じにしてみました。 かなり 長々で、他に良い方法があるかもしれませんが・・・ エクセル初心者なので、色々勉強をして より良い方法を考えてみたいと思います。 アドバイス ありがとうございました。