Excel(エクセル)関数の練習問題仕事ですぐ使える!役立つ!Excel(エクセル)関数の使い方・裏技を練習問題で楽しく身につけよう!

無料メルマガ【Excel(エクセル)関数の練習問題】

エクセルの練習問題を出す【練習問題】と、読者様のご質問にお答えする【教えて!エクセル関数】を毎週お送りします。表計算もおっかなびっくりの初心者から、エクセルデータベース作成もサクサク上級者まで!

メールアドレス: Powered Byまぐまぐ

No.30 Excel上級編:1年間の表から月ごとの金額を取り出す

出題

※この問題は中級編 「社員別に合計」の続きです。
さて、年間合計金額から平均は出せるものの、月ごとの金額も出す
にはどうしたら良いでしょうか?
本社に提出するためには、月ごとの金額も必要らしいです…(ーー;

百合子さんには荷が重かったかな??
さぁ、あなたならどうする?


解答

今回使う関数はSUMPRODUCT(サムプロダクト)関数です。
SUMPRODUCT関数って?

早速やってみましょう!

準備として、1月~12月の初日と末日の日付の入ったセルを用意します。

まず、加藤さんの1月の合計金額から出してみましょう。
集計表の加藤さんの1月の欄に、「=SUMPRODUCT(」と入力します。

第一条件として1月の経費ですから、元の管理表の日付欄が1月1日と1月31日との間にある数値という条件を指定したいわけです。
日付欄(A3:A50)のうち、1月1日より大きく、1月31日より小さいもの(シリアル値)だけを出したいわけですから、「=SUMPRODUCT((A3:A50>=D52)*(A3:A50<=D59)」のようになります。

※SUMPRODUCT関数内で、配列として「A3:A50が1月1日より大きい」という式を指定すると、式を満たす行は「1」、式を満たさない行は「0」として扱われます。

第二条件として、加藤さんの経費ということですから、同様に元の管理表の社員名欄が「加藤」(イメージ図ではA54)となっているという条件も指定しなければなりません。
「=SUMPRODUCT((A3:A50>=D52)*(A3:A50<=D59)*(B3:B50=A54)」のようになります。

条件指定部分が終わり、最後に合計したい列をかけます。
「=SUMPRODUCT((A3:A50>=D52)*(A3:A50<=D59)*(B3:B50=A54)*C3:C50)」のようになります。

つまり、日付欄が1月1日以上なら「1」それ以外なら「0」×日付欄が1月31日以下なら「1」それ以外なら「0」×氏名欄が「加藤」なら「1」それ以外なら「0」×金額欄 という計算を、元の集計表の一番上から一番下まで繰り返して、その結果を合計すると1月の加藤さんの経費になる、ということです。複雑(ーー;;
SUMPRODUCTは、複数の条件を満たすものの計算に便利ですので、上級者のあなたは覚えておいて損はないと思います!
「と言っても、メンドーな新しい関数を覚えたくないんですけど…」というモノグサなあたなには…
読者カタミちゃん様が先週送って下さったお答えをご紹介しますね(^^)方法その1:
・社員名欄の社員名と、MONTH(日付欄)で出した利用月を「&」で繋いで、社員名+月の列を追加する(例:加藤さんの1月分は「加藤1」)
・SUMIFを使って、条件範囲に社員名+月の列を、検索条件に該当する社員名+月の文字列を、合計範囲に金額欄を指定する。
方法その2:
・ピボットテーブルを利用する(関数のメルマガなので説明は割愛させて頂きますm(_ _)m 内容は素晴らしいものでした!)
気合の入った回答を送っていただいたカタミちゃん様に感謝!
==================お詫びと訂正=========================
先週、お答えを送って下さった読者様としてめんちゃん様のお名前を挙げてしまいましたがカタミちゃん様の誤りでした。お詫びして訂正しますm(_ _)m

無料メルマガ【Excel(エクセル)関数の練習問題】

エクセルの練習問題を出す【練習問題】と、読者様のご質問にお答えする【教えて!エクセル関数】を毎週お送りします。表計算もおっかなびっくりの初心者から、エクセルデータベース作成もサクサク上級者まで!

メールアドレス: まぐまぐ