• ベストアンサー

エクセルで3行おきの集計

以下のような表で、3行おきの集計がしたいのですが どんな関数を使ったらいいのかわかりません。     1月 2月 ・・・ 12月  純売 350 850    1020 A 粗利 222 551    669  率  63% 65%  純売 500 900 B 粗利 352 450  率 ・ ・ Z 純売だけの当月の計と、粗利だけの当月の計を表の一番下に表示させたいのです。「純売・粗利・率」という2列めのサイクルは、表の一番下まで全く同じです。 結構大きな表なので、数字の入っているセルをピックアップして、足し算するのにも限界があります(・・・最初はそうしていました・・・泣) 当方、恥ずかしながらエクセル初級レベルですので・・・どうか皆さんの力を貸してください。お願いします!

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

普通は上級者の問題として、配列数式を使った解が載っています。 (例データ)A1:A9 1 2 34 2 34 56 3 43 23 (関数式)2,5、8行を合計 =SUM(IF(MOD(ROW(A1:A9),3)=2,A1:A9,0)) と入れて、SHIFTキーとCTRLキーを押しつつ ENTERキーを押す。 先頭と後尾に{ }がつき(配列数式) 結果は79になります。 #2のお答えとよく似ているが最後と「SHIFTキーとCTRLキーを押しつつENTERキーを押す。」が書いてないので別解でしょう。 MOD(ROW(A1:A9),3)=2の2を1や0に変えて他の行の合計を求められます。

pitsu
質問者

お礼

SHIFT+Ctrl+Enterがミソですね! この式の意味をよく理解して、どんどん活用したいと思います。 ありがとうございました!

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

#1の方と同じく、私も単純にSUMIFでいいと思います 純売 =SUMIF($A$1:$A$6,"純売",B$1:B$6) 粗利 =SUMIF($A$1:$A$6,"*粗利",B1:B6) =SUMIF(項目を調べる範囲,調べる項目,合計する範囲) で、項目を調べる範囲は、絶対参照で固定して、式を横にコピーします。 あと、それとは、別に飛ばし合計する関数を作ってみました。 Public Function sumstep(c As Integer, r As Integer, range As range) Dim s,i,j s = 0 For i = 1 To range.Rows.Count Step r + 1 For j = 1 To range.Columns.Count Step c + 1 s = s + range.Cells(i, j) Next j Next i sumstep = s End Function 標準モジュールに貼り付けて使います。 使い方 =sumstep(列方向にとばす数,行方向にとばすかず,範囲) 純売 =sumstep(0,2,B1:B6) 粗利 上の式を下にコピー

pitsu
質問者

お礼

うわ~すごいですね~ 皆さん、尊敬します・・・(感激) おもしろそうなので、月末のバタバタが終わったら、ちょっとトライしてみます。 ありがとうございました!

  • taocat
  • ベストアンサー率61% (191/310)
回答No.4

      A    B   C   D  1  項目  1月  2月  3月   2 純売上  100 150 200  3 粗利益   30  50  80  4 利益率  5 純売上  6 粗利益  7 利益率  8 純売上  9 粗利益 10 利益率 ------------------------------------------- 11 (売計) 12 (粗計) 13 (率) このような表(簡単の為に行を少なくしてあります)だとして 今回の場合は純売上とか粗利益とかキー項目があるので 面倒な配列数式は使わなくてもできます。 B11(1月純売上合計)セルに =SUMIF($A$2:$A$10,"純売上",B2:B10) 又は =SUMPRODUCT(($A$2:$A$10="純売上")*B2:B10) B12(1月粗利益合計)セルに =SUMIF($A$2:$A$10," 粗利益",B2:B10) 又は =SUMPRODUCT(($A$2:$A$10="粗利益")*B2:B10) 1月計が終わったら、「1月計」セルのフィルハンドルを、2,3,4月・・・と列方向にドラッグして式をコピーする No1の回答にもありますが、今回のように、「純売上」等の「キー項目」がある場合は、2行置き(3行置きは間違い)とかは考える必要はありません。 以上です。  

pitsu
質問者

お礼

そうなんですね! 間があいている事を気にしすぎて、難しく考えすぎたようで・・・ SUMIFは、キー項目の隣の列に数字がないと使えないのかと勘違いしてました。 しかし、いろいろな回答があって、どれも正解!って、面白いですね~がんばってエクセル覚えます!

  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.2

C2:C100に合計したいデータで、純利がC2、C5…、粗利がC3、C6…として 純利合計:=SUM(IF(MOD(ROW(C2:C100),3)=2,C2:C100)) 粗利合計:=SUM(IF(MOD(ROW(C2:C100),3)=0,C2:C100)) SUM(IF(MOD(ROW(C2:C100),3)=2,C2:C100)) は、「行番号を3で割ったときに2余るセルを合計する」という意味なので、行がずれたら「=2」の2の部分が0または1に変わる場合があります。 下記ページを参考にしてみて下さい。 http://www.h3.dion.ne.jp/~fukusima/waza/ura063.html

参考URL:
http://www.h3.dion.ne.jp/~fukusima/waza/ura063.html
pitsu
質問者

お礼

ありがとうございます! ROWやMODなんて、使ったことありませんが、がんばってやってみます!

  • radio98
  • ベストアンサー率18% (16/88)
回答No.1

SUMIF関数でいけそうな気がします。 "純売り" という言葉がある行のある列を合計するという感じです。 3行おきと考えてしまうと難しいですけどね。