本ページはプロモーションが含まれています
EXCELで同じ名前、項目ごとに集計する方法を紹介。
関数だけでvbaは不要です。
同じ名前、項目ごとに集計する方法
まずはサンプルシート。

A列に商品、B列に金額が入力されています。
A列の商品別に集計する方法です。
お急ぎの方はコピー&ペーストして下さい
C2に
=INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$31&””,$A$2:$A$31&””,)<>ROW($1:$30))*10000+ROW($2:$31),),ROW(A1)))&””
D2に
=IF(C2=””,””,SUMIF(A:A,C2,B:B))
最後にC2:D2を下にずらっとコピーです。
結果はこちら。

Yahoo知恵袋を参照しました。
ちょこっと解説
C2に入れた関数式についてちょこっと解説。
少しずつ刻んで見て行きましょう。
MATCH($A:$A&””,$A:$A&””,)
=INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$31&””,$A$2:$A$31&””,)<>ROW($1:$30))*10000+ROW($2:$31),),ROW(A1)))&””
黄色で示した部分です。
こちらは何をしているかというと。

A2:A31の範囲内で同じ項目を探してます。
同じ項目があれば最初にそれが出てきた順番を。
新規の場合は配列内(A2:A31)の順番を返します。
「いす」はA2では配列の1番目に登場しているので1を
A6ではA2で登場した時と同じ1を返しています。
空白のセルであるA10は新規なので配列内の順番である9を返しています。
検索範囲を変更したい場合は$A$2:$A$31の部分を変更して下さい。
ROW(:) / ROW(:)
=INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$31&””,$A$2:$A$31&””,)<>ROW($1:$30))*10000+ROW($2:$31),),ROW(A1)))&””
こちらは簡単。
配列の行番号を返します。
D2から下に入力しました。

1から順番に増えてます。
もうひとつROW関数。
=INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$31&””,$A$2:$A$31&””,)<>ROW($1:$30))*10000+ROW($2:$31),),ROW(A1)))&””
E2から下に入力。

こんどは2行目からなので2から増えていますね。
こちらも$1:$30、$2:$31の範囲を使用に合わせて変更して下さい。
INDEX((MATCH($A:$A&””,$A:$A&””,)<>ROW(:))*10000+ROW(:),)
=INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$31&””,$A$2:$A$31&””,)<>ROW($1:$30))*10000+ROW($2:$31),),ROW(A1)))&””
上で解説した部分との合わせ技になってきました。
こちらの黄色塗りした部分をF2に入力した結果です。

(MATCH($A$2:$A$31&””,$A$2:$A$31&””,)<>ROW($1:$30))
の部分で解説1と解説2の計算結果を比較しています。
C列,D列が異なる値かどうかの比較です。
INDEX((MATCH($A$2:$A$31&””,$A$2:$A$31&””,)<>ROW($1:$30))*10000+ROW($2:$31),)
の計算でC列とD列が同じ値の場合は行番号を。
異なる値の場合は10000をプラスした形になってます。
10000をプラスしたというのは比較結果が正なら1、偽なら0。
1と0に対しての*10000なので10000か0のいずれかです。
項目数が10000個以上ある時は「*10000」の桁を増やしてください。

SMALL(INDEX((MATCH($A:$A&””,$A:$A&””,)<>ROW(:))*10000+ROW(:),),ROW(A1))
=INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$31&””,$A$2:$A$31&””,)<>ROW($1:$30))*10000+ROW($2:$31),),ROW(A1)))&””
SMALL関数です。
これは解説3の計算結果を
小さいから順に並べ替えています。

INDEX(A:A,SMALL(INDEX((MATCH($A:$A&””,$A:$A&””,)<>ROW(:))*10000+ROW(:),),ROW(A1)))&””
C列解説の最後です。

A列の中から解説4で計算した行番号の項目を表示しています。
Excelの魔術師へ! さいしょの一歩D列での集計
いよいよ最後。
D列での集計です。
C列に表示されている項目と同じ項目の合計をSUMIFで計算しています。

ほかにもいろいろ書いてます
↓ 下記からご覧ください
サイトマップ
ブックマークして頂けると嬉しいです
よろしくお願いいたします
コメント