プロが教えるわが家の防犯対策術!

A列に名前が入っています。
B列に数字(個数)が入っています。
A列にある名前は重複しています。(同じ名前が何回も出現します。)
このA列にあるリストを同じシートのD列に表示し、更にE列に名前ごとの合計を出したいのですが、どうすればよいでしょうか?
つまり
A列   B列
太郎   50
一郎   20
花子   30
太郎   40
花子   50
一郎   50
太郎   20

これを
太郎=110
一郎=70
花子=80
としたいのです。
よろしくお願いします。

A 回答 (10件)

C列を作業用として使用していいものとし、説明上1行目が見出しで、


データが、2行目からあるものとします。

一応、データが1000行まであるとしています。

C2に 
=IF(COUNTIF(A$2:A2,A2)=1,COUNT(C$1:C1)+1,"")

D2に
=IF(ISNA(MATCH(ROW()-1,C$2:C$1000,0)),"",OFFSET(A$2,MATCH(ROW()-1,C$2:C$1000,0)-1,0))

E2に
=IF(D2="","",SUMIF(A$2:A$1000,D2,B$2:B$1000))

の式を入れ、それぞれ必要分下へコピーします。

この回答への補足

C列の作業用のセルはどういう意味があるのでしょうか?
数字が入っているセルと入っていないセルがあるのですが、これは問題ないのでしょうか?
この列を入れずには出来ないでしょうか?

補足日時:2003/04/25 15:00
    • good
    • 0

No.9 の表現修正



>> C列の作業用のセルはどういう意味があるのでしょうか?

> 計算過程で仮に使う列のことです。
   ↓
直接目的のセルに計算式を設定すると、計算式が長くなってしまい
解りにくくなりますので、使っていない列を使用し、途中までの
計算を行うセルのことです。

こういうときは、新しいブックに提示された式をそのまま貼り付けて
テストしてみるようにした方がいいですよ。

そして動作を確認した上で、式の意味を理解し、応用するのです。
それが上達の秘訣と思いますよ。
    • good
    • 0

No.6 の補足に対する解答です。



> C列の作業用のセルはどういう意味があるのでしょうか?

計算過程で仮に使う列のことです。
C列は、使っていようですので、GでもHでもいいですから、何処か
空いている列に変更します。

式を C からその列名に変更います。
作業用の列は、式を設定後、非表示にします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
新しいブックでテストしたときはうまく出来たのですが、目的のシート(ブック)をコピーして検証用としてやると思うようにできません。
1つ1つ確認しながらやっていきます。

お礼日時:2003/04/27 11:58

次記のタイプの回答が出ていないようなので記します。


第1行目のA列,B列に、見だしフィールドとして、名前、個数と入力する。
(1)A列B列のデータのあるセルを範囲指定する。
そして、データ-並べ替えでA列をソートキーにして並べ替えます。
元に戻したいならソート前に各行に連番を振っておきます。
(2)データのある範囲(連番も含め)を指定します。
(3)データ-集計-(グループの基準)名前、
(集計方法)合計、(集計するフィールド)個数
「現在の集計表と置き変える」にチェック-OKをクリック
(4)アウトラインの2レベルをクリックすると、マイナス(-)が+になり、集計行のみ残る。
(5)残った集計行を、コピーし別の範囲に貼りつける
(1)のソートが必要か、と疑問を持ちましたが取り合えづのせます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にさせていただきます。

お礼日時:2003/04/27 11:51

>IF文の中にある 65537 ってどういう意味があるんですか?


Excelの最大行(65536)+1です。
つまり、どの行番号よりも大きな値を取る為の値です。
ただし、実質上は、仮にデータがA1~A10なら、11以上であればOK、という風にデータ範囲より下の行番号以上ならOKなんですがね。
    • good
    • 0
この回答へのお礼

細かいところまでありがとうございます。
それぞれの意味を考えながらやっていきます。

お礼日時:2003/04/27 11:49

こんにちは。

maruru01です。

かなりややこしいですが。
D1に、

=IF(ISERROR(INDEX($A$1:$A$7,SMALL(IF(MATCH($A$1:$A$7,$A$1:$A$7,0)<>ROW($A$1:$A$7),65537,ROW($A$1:$A$7)),ROW(A1)))),"",INDEX($A$1:$A$7,SMALL(IF(MATCH($A$1:$A$7,$A$1:$A$7,0)<>ROW($A$1:$A$7),65537,ROW($A$1:$A$7)),ROW(A1))))

と入力して、最後に[Enter]を押して決定する代わりに、[Ctrl]と[Shift]を押しながら[Enter]を押して決定します。
(上記の式の両端に「{}」が付いて配列数式になります。)
これを下の行へコピー
E2に、

=IF(D1="","",SUMPRODUCT(($A$1:$A$7=D1)*$B$1:$B$7))

と入力して(配列数式にはしません。)、下の行へコピー
式中の「$A$1:$A$7」「$B$1:$B$7」はデータ範囲ですので、適宜変更して下さい。

この回答への補足

IF文の中にある 65537 ってどういう意味があるんですか?

補足日時:2003/04/25 13:28
    • good
    • 0

名前がわからないのならSUBTOTAL関数ですね。

B列全体をSUBTOTALで合計しておいて名前をオートフィルタで任意の名前を抽出してやるとフィルタに応じて自動的に合計してくれます。
    • good
    • 0

データベース関数はどうですか


DSUM関数で抽出できますが

参考URL:http://homepage1.nifty.com/kenzo30/ex_kisotyu/ex …
    • good
    • 0

sumif関数を使ってはどうでしょうか



=sumif(A1:B100,"太郎”,b1:b100)
    • good
    • 0

sumif関数を使ってはどうでしょうか



=sumif(A1:B100,"太郎”,b1:b100)

この回答への補足

A列に出てくる名前が分かれば良いのですが、シートが多数あり、シートによって出てくる名前・頻度・名前の数がまちまちです。
その列にある名前をリストとして抽出して、同じシートの別の列に表示し、合計するにはどうしたらよいのでしょうか?

補足日時:2003/04/25 11:28
    • good
    • 0

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