- 締切済み
月別に件数を取得したい
こんにちは、以下質問お分かりになる方がいらっしゃいましたら、 是非教えて頂きたく思います。 以下のような表があった場合、月別に件数を表示したいと考えています。 A列 B列 2014/04/01 2 2014/04/01 2014/04/03 5 2014/05/03 2014/05/04 1 2014/05/07 B列は件数ではなく何か記載されていたら1件としたいので 2014/04だと以下のように表示したいと思っています。 2014/04 2 月はSUMPRODUCT((TEXT(B1:B10),"YYYYMM")="201404")*1)として判断できましたが これにB列に値があったら、という条件をどうつけてよいのかわかりません。 よろしくお願い致します
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
>月はSUMPRODUCT((TEXT(B1:B10),"YYYYMM")="201404")*1)として判断できましたがこれにB列に値があったら、という条件をどうつけてよいのかわかりません。 下記の式は誤りです。(タイプミス) =SUMPRODUCT((TEXT(B1:B10),"YYYYMM")="201404")*1) ↓ =SUMPRODUCT((TEXT(A1:A10,"YYYYMM")="201404")*1) B列の値があったらの条件を付ける場合は次のようになります。 =SUMPRODUCT((TEXT(A1:A10,"YYYYMM")="201404")*(B1:B10<>"")) または =SUMPRODUCT((TEXT(A1:A10,"YYYYMM")="201404")*1,(B1:B10)*1) Fxボタンをクリックしたときの数式入力ダイアログボックスは添付画像のようになり、数式のチェックに役立ちます。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 質問ではSUMPRODUCT関数をご使用ですので、Excel2003までのバージョンでも対応できる SUMPRODUCT関数を使ってみました。 ↓の画像で左側が元データのSheet1で、右側のSheet2に表示するとします。 Sheet1に作業用の列を1列設けます。 作業列D2セルに =IF(A2="","",IF(SUMPRODUCT((MONTH(A$2:A2)=MONTH(A2))*1)=1,ROW(),"")) という数式を入れフィルハンドルで下へずぃ~~~!っとコピー! (これはA列日付の月を重複なしにSheet2に表示させるためです) 次にSheet2のA2セル(セルの表示形式はユーザー定義から yyyy/mm としておきます)に =IF(COUNT(Sheet1!D:D)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!D:D,ROW(A1)))) そして、B2セルに =IF(A2="","",SUMPRODUCT((MONTH(Sheet1!A$2:A$1000)=MONTH(A2))*(Sheet1!B$2:B$1000<>""))) という数式を入れ、A2・B2を範囲指定 → B2セルのフィルハンドルで下へコピー! これで画像のような感じになります。 ※ SUMPRODUCT関数は配列数式になりますので、極端にデータ量が多い場合はおススメしません。 とりあえず1000行目まで対応できる数式にしていますが、 3000行程度であれば問題ないと思います。m(_ _)m
下図の様にD列に集計月を日付まで入力(表示型式で年月表示は可)しE列にカウントを表示するものとしました。 E1式 エクセル2003=SUMPRODUCT((A:A>EOMONTH(D1,-1))*(A:A<=EOMONTH(D1,0))*(B:B<>"")) エクセル2007以降=COUNTIFS(A:A,">"&EOMONTH(D1,-1),A:A,"<="&EOMONTH(D1,0),B:B,"<>") EOMONTHはその月の最終日を取得します。0で当月、-1で先月を指定。 EOMONTHは2003の場合、アドイン登録する必要があります。 メニュー[ツール]-[アドイン]をクリック ↓ [アドイン]ダイアログ-[分析ツール]チェックをOnに ↓ [アドイン]ダイアログ-[OK]ボタンをクリック
- mshr1962
- ベストアンサー率39% (7417/18945)
>SUMPRODUCT((TEXT(B1:B10),"YYYYMM")="201404")*1) 上記の数式だと、B列に日付があるのだと思うのだけど >B列は件数ではなく何か記載されていたら1件としたいので はどういう意味でしょうか? A列が日付でB列のデータの有無ということなら =SUMPRODUCT((TEXT(A1:A10),"YYYYMM")="201404")*(B1:B10<>"")) A列が日付でB列の数値の合計ということなら =SUMPRODUCT((TEXT(A1:A10),"YYYYMM")="201404")*(B1:B10))
補足
>B列は件数ではなく何か記載されていたら1件としたいので はどういう意味でしょうか? すみません、記載数字の合計ではなく、何か記載されたら1件とする、の誤りです。