- ベストアンサー
エクセルで月次集計
いつもお世話になります。 一生懸命検索をしたのですが、よくわからなかったので質問させてください。 エクセルで簡単な現金出納帳があります。 A列は上から○月○日と日ごとに入力し、B列に入金、C列に出金を入力していきます。表そのものは1年間を単純に入れていきます。 別シートに各月ごとの入金・出金合計を関数で集計したいのですが、SUMIFを使っても条件の設定がわかりません。 実際の入力は4/10と入力しています。セルの表示は4月10日と表示され上の窓?には2006/4/10と表示されています。 初歩的な質問だと思いますが、助けてください。御願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>各月ごとの入金・・合計を集計したい(関数で) 2006/6月の日付の分だけ足せばよい。SUMIFの条件は、2006年6月ですね。 ではどうすれば、A列の日付から6月を判別できるのでしょうか? それはエクセルの日付の記憶の仕組みについて知らないとなりません。 エクセルは日付を1900年1月1日からの実際の何日後かという正整数値で表します(変換して記憶します)。ですから 2006/6/1 38869日目より大で かつ 2006/6/30 38898日目より小 という条件にすえればよいのです。 しかし2つの整数(日付シリアル値)を見つけるのが面倒です。 それで関数を使い YEAR(A1)=2006 で かつMONTH(A1)=6という条件を使います。 「かつ」はAND条件なので =AND(YEAR(A1)=2006,MONTH(A1)=6) で条件が出来上がります。 しかしSUMIF関数では条件部に=AND()が許されません。 あえてやるなら 作業列C列に に=IF(AND(YEAR(A1)=2006,MONTH(A1)=6),1,"") として D1(どこでも良い)に=SUMIF(C1:C8,1,B1:B8)として縦方向に式を複写する。C列、D1の結果は下記 A列 B列 C列 D列 2006/5/5 1 18 2006/5/30 2 2006/6/2 3 1 2006/6/3 4 1 2006/6/23 5 1 2006/6/30 6 1 2006/7/1 7 2006/7/2 8 他シートに出すときは少し換わりますが。 この中間作業列を使わないためには 一段飛躍した関数の知識が求められて、SUMPRODUCT関数を使います。 =SUMPRODUCT((YEAR(A1:A8)=2006)*(MONTH(A1:A8)=6)*(B1:B8)) として結果 18となります。 *による掛け算はAND条件の場合に使い、()内は0か1かが返り、それとB列の計数を掛けて足すと1(真=条件該当)のもののみ残ったように足されます。SUMPRODUCTは、名の通り、掛けて足す関数です。 >初歩的な質問だと思いますが 上記で判るように別のDSUMなどを使えば、または年と月の結合した数の文字列を作業列に作れば(上記ではC列は1にしましたが200606のような文字列を関数で作る)、SUMIFで計算できますので、やや初等的に解けます。 また上記SUMPRODUCT関数は、別の配列数式という仕組みを使ってでも解けますが(略) ーー 他シートへ出すのは =SUMPRODUCT((YEAR(Sheet1!A1:A8)=2006)*(MONTH(Sheet1!A1:A8)=6)*(Sheet1!B1:B8)) です。もちろん結果は18 ーー 2条件の場合の加算は毎日のように質問があります。
その他の回答 (2)
- ham_kamo
- ベストアンサー率55% (659/1197)
Sheet1に1年分のデータが入っており、1行目はタイトル行で2行目からデータが入っていると仮定。 集計シートのフォーマットが不明なので、以下のように仮定します。 A B C 月 入金 出金 1 2 3 : : 12 (あるいは4月~3月) 1行目がタイトル行で、2行目以降にA列に月の数字が入っており、B列とC列にその月の入金、出金の合計を表示する、と仮定。 B2に以下の式を入力 =SUMPRODUCT((MONTH(Sheet1!$A$2:$A$1000)=$A2)*Sheet1!B$2:B$1000) データ数が1000以上なら、$1000の部分はそれより大きな数字にしてください。 B2のセルを、右と下にコピーすると、1年分の入金、出金の合計を算出できます。
お礼
ご回答ありがとうございます。 理屈はわかりませんが、求めていた関数です。 SUMPRODUCTについて調べたいと思います。
- dakedakepuru
- ベストアンサー率20% (1260/6200)
sheet1に全ての日付と入金、出金を入れて、 別シートに「1月合計」「2月合計」などと出すのですか? であれば、sumifでなくても、通常のsumでシートと該当月のデータを 選択すれば結果は出るはずですが…。 すみません、これだけでは何ともいえないのでもうちょっと 補足してください。
お礼
ご回答いただきまして、ありがとうございます。 説明不足で申し訳ありませんでした。 データを作成していきながら、自動に集計ができるようにしたいのです。 他の方の回答で解決いたしましたので、補足をとのことでしたが今回は締め切らせていただきます。 また、質問させていただいた際は宜しくお願いいたします。
お礼
ご回答ありがとうございます。 1列作業用の列を入れればできるところまでは、考えついたのですが。 丁寧な解説をありがとうございました。 SUMPRODUCTについて理解ができました。 いろいろ使えそうな関数ですね。