• ベストアンサー

COUNTIF関数で、縦横の条件の積?

過去質問を色々見たのですが、わかりませんでした。 どなたか、ご教授ください! <表1>から、<表2>の実績表を作りたいと思います。 <表1>   A   B   C   D   E … 1     5/1  5/5  6/2  7/8 2 10g  2   1 3 20g      5   5 4 30g  1           6 <表2>   A   B   C   D   E … 1     5月  6月 7月  8月 2 10g  3    3 20g  5   5 4 30g  1      6 SUMPRODUCT関数は、横の数値の積を縦に計算するんですよね? ということは<表1>の「月」を条件とすることはできないのでしょうか?? 何か良い方法はありますか?

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 (1)表1をA1:E4として、B1:E1は日付シリアル値で表示形式をm/dとします。 (2)表2をA7:E10として、B7:E7は日付シリアル値で表示形式をm"月"とします (3)表2のB8に=SUMPRODUCT(($A$2:$A$4=$A8)*(MONTH($B$1:$E$1)=MONTH(B$7))*($B$2:$E$4))として縦横にコピー   因みにB8:E10の表示形式をG/標準;-G/標準;;としておけば0は空白となります。

chikachu
質問者

お礼

ご回答に感謝します! そうです、これがやりたかったんです(T_T) 個人的に、よく使うSUMPRODUCTを使いたかったんです。 感動です、ありがとうございました!

その他の回答 (2)

回答No.2

<表2>一番右が決まっているなら 仮に8月までとして E8セル =SUMIF($B$1:$E$1,">="&E$7,$B2:$E2) 下へオートフィル D7セル =SUMIF($B$1:$E$1,">="&D$7,$B2:$E2)-SUM(E8:$E8) 下へ 左へオートフィル ただし、表1、表2のA列の並び順は同じものとする 表2の7行目は書式設定で 表示形式 ユーザー設定 [DBNUM3]m!月 にする 参考まで

chikachu
質問者

お礼

ご回答に感謝します。 この方法でも出来ました! #1の方の方法よりも短い数式ですが、考え方が難しいですね… 勉強します!ありがとうございました!

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

まず、表2の「5月」「6月」・・・等は 「2009/5/1」のような形式で入力しておき、セルの書式設定→表示形式→ユーザー定義で「m"月"」にしてOKします。 次にB2に入れる数式は、表1が「Sheet1」にある場合、 =SUMIF(Sheet1!$B$1:$E$1,">="&B$1,Sheet1!$B2:$E2)-SUMIF(Sheet1!$B$1:$E$1,">="&DATE(YEAR(B$1),MONTH(B$1)+1,0),Sheet1!$B2:$E2) といれます。 このB2を下方向、及び横方向にオートフィルしてコピーすれば、表2が完成します。

chikachu
質問者

お礼

さっそくのご回答に感謝します。 SUMIF関数は初めてでしたが、とにかく入れてみたら出来ました! これから、関数のからくりについて、じっくり解析してみたいと思います。 どうもありがとうございました!

関連するQ&A