【お題】王手、そして

エクセル97で
下のような表をつくっています。
一番下にa,b,cのそれぞれの合計の計算式をいれたいのですが、
a,b,cはその時によって何回つづくかわかりません。
毎回、つづいた回数分のそれぞれの合計をだすようにしたいのですが、
○の部分にはどのような計算式をいれればよいでしょうか?
わかりにくい説明で申し訳ありませんがよろしくお願いします
     A B
a    12 31    
b    23 51      
c    15 22      
a    62 8    
b    16 33    
c    30 8
    ・ ・    
    ・   ・
a合計 ○  ○
b合計 ○  ○
c合計 ○  ○

A 回答 (7件)

すいません。

前の回答に間違いがありました。正しくは、

=SUMIF($A1:OFFSET(B17,-1,-COLUMN()+1),"a",B1:OFFSET(B17,-1,0))

です。絶対参照にするのを忘れてました。こちらで試してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
見事成功しました。
またよろしくおねがいします。

お礼日時:2002/06/15 22:46

補足です。

Offset関数は簡単に言うと OFFSET(B17,-2,-1)だと、B17のセルから縦に-2(下方向がプラスなのでこの場合上に2)、横に-1(右方向がプラス)移動したセルということです。詳しくはヘルプを見てください。

先ほどの数式を横方向にコピーするとなると、B17のセルには次の式が入ります。

=SUMIF(A1:OFFSET(B17,-1,-COLUMN()+1),"a",B1:OFFSET(B17,-1,0))

(COLUMN関数は対象セルの列番号を返します。この場合、A列にabc、B列以降に数値と言う前提ですので、そうでない場合は、-COLUMN()+1 の最後の+1の部分が変わります。具体的にはabcの列の列番号になります。

B18,B19のセルにも同じように、 -COLUMN()+1 の部分を入れてやれば、横方向にコピーできます。頑張ってください。

あと、縦方向のコピーはちょっと難しいですので、3つぐらいなら手で入力した方が早いと思います。
    • good
    • 0

>その計算式を横へ横へコピーしていきたいんですがよい方法はないでしょうか??



横にコピーを目的にすると・・・、
=SUMIF(OFFSET($A$1,0,0,MATCH("a合計",$A:$A,0)-1,1),"=a",OFFSET(B$1,0,0,MATCH("a合計",$A:$A,0)-1,1))

#4 naoko3 さんの回答がきれいですね。
    • good
    • 0
この回答へのお礼

ご親切にありがとうございました。
またよろしくおねがいします。

お礼日時:2002/06/15 22:49

A列にa.b.c.a.b.c…、B列C列に各数値が入っているものとします。

仮に合計を出すセルを17列から19列とします。B17のセルには次の式が入ります。

=SUMIF(A1:OFFSET(B17,-1,-1),"a",B1:OFFSET(B17,-1,0))

入力されたセル自体を基準として連続した数値の範囲を指定するので行の挿入や削除に対応してくれます。間に行を挿入してみると式の中のB17のところが自動で変わります。(SUMIF関数については分かりますよね。)同じようにB18のセルには

=SUMIF(A1:OFFSET(B18,-2,-1),"b",B1:OFFSET(B18,-2,0))

B19のセルには
=SUMIF(A1:OFFSET(B19,-3,-1),"c",B1:OFFSET(B19,-3,0))

C17のセルには
=SUMIF(A1:OFFSET(C17,-1,-2),"a",C1:OFFSET(C17,-1,0))

C18のセルには
=SUMIF(A1:OFFSET(C18,-2,-2),"b",C1:OFFSET(C18,-2,0))

C19のセルには
=SUMIF(A1:OFFSET(C19,-3,-2),"c",C1:OFFSET(C19,-3,0))

がそれぞれ入ります。

エクセル2000で試して見ましたが、問題ないようなので、多分97でも大丈夫と思います。

この回答への補足

ありがとうございます。
初心者なもんでもう一つおしていただきたいのですが
式の-1,-1とか-1,0の意味がよくわからないのですが
どういう考え方なのでしょうか??
よろしくおねがいします。

補足日時:2002/06/15 10:14
    • good
    • 0

質問で、a、b、c・・・はA列。


12、23、15・・・はB列
31、51、22・・・はC列 とします。


『a合計』はA列のどこかにあり、

この横のセル(B列)に
 =SUMIF(INDIRECT("A1:A"&MATCH("a合計",A:A,0)-1),"=a",INDIRECT("B1:B"&MATCH("a合計",A:A,0)-1))

2つ横のセル(C列)に
 =SUMIF(INDIRECT("A1:A"&MATCH("a合計",A:A,0)-1),"=a",INDIRECT("C1:C"&MATCH("a合計",A:A,0)-1))

とします。

『b合計』、『c合計』については、上の2式の "=a" の部分を、"=b"、"=c" に変更します。

『a合計』が書かれた行の上に行の挿入を行っても、MATCH("a合計",A:A,0)-1で『a合計』が書かれた1行前の行数を計算してるので、検索する範囲は行挿入に対応します。

この回答への補足

ありがとうございました。
成功しました。
それから、もう一つおうかがいしたいのですが
その計算式を横へ横へコピーしていきたいんですが
よい方法はないでしょうか??

補足日時:2002/06/15 09:57
    • good
    • 0

例えばA列のaの和を出したいときは、


=sumif(検索範囲,”検索条件”,合計の範囲)
という感じです。ので、質問の場合は、
=SUMIF(A2:A7,"a",B2:B2)
といったところでしょう。

この回答への補足

早速ありがとうございます。
行を挿入してデータが増えた場合も
自動的に式の範囲が広がるようにしたいのですが
よい方法はないでしょうか?

補足日時:2002/06/14 23:46
    • good
    • 0

ピボットテーブルで集計表を作ってみてはいかがでしょうか。


表を範囲指定して、データ→ピボットテーブルで、
ヴィザードが起動しますので、やってみてください。
集計表はピボットテーブルを使うと簡単に作れますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報