- ベストアンサー
Excelの機能に関して
Excelで次のような計算を行う機能はあるでしょうか。もしあるようでしたら、その機能の名前とその機能の使い方を教えてください。 A B D E a 1 a 5 b 2 b 3 c 3 c 3 a 1 a 3 b 1 A列にあるa,b,cという名称のものが、それぞれB列にある数字の分あるとします。これを、何らかの機能を用いて、D,E列のように整理したいのです。 どなたかご存知のかたがいらっしゃいましたら、教えていただけると大変たすかります。どうかよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1行目から6行目までデータがあるとして。 以下の関数をE1に入れて、E2・E3・・・にコピーする。 =SUMIF($A$1:$A6,$D1,$B$1:$B6) 解説 D1とA1セルからA6にあるデータが同じ行の、B1からB6までのデータを足し算する。 100行までデータがあるなら、=SUMIF($A$1:$A100,$D1,$B$1:$B100) A行とB行のデータは増えていくと思いますので、後で訂正が大変なので100ではなく多めにする方が良いでしょう。 面倒なら「=SUMIF($A$1:$A$65536,$D1,$B$1:$B$65536)」でも可。 「$」がついてるのは「絶対参照」コピーしても変化しない。 「$」がついていない関数をコピーすると「=SUMIF(A2:A7,D2,B2:B7)」に変化してしまいます。 E1に「=SUMIF(A1:A6,D1,B1:B6)」 E2に「=SUMIF(A1:A6,D2,B1:B6)」 E3に「=SUMIF(A1:A6,D3,B1:B6)」 でも結果は同じですが、コピーすると上記説明のように変化するので、「$」をつけてコピーします。
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
SUMIF関数を使う前にa,b,cなどがどれだけあるかを調べることが必要でしょう。すべてのデータは2行目から下方にあるとしてC2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(C$1:C1)+1,"")) これで新しい文字列があれば上から番号が振られます。 そこでお求めの表ですがD2セルには次の式を入力し下方にオートフィルドラッグします。 =IF(COUNTIF(D:D,ROW(A1))=0,"",INDIRECT("A"&MATCH(ROW(A1),D:D,0))) E2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(D2="","",SUMIF(A:A,D2,B:B))
お礼
ご回答ありがとうございます。 最終的にやりたいことがあるのですが、これはその基本的な知識として必要なものでして、その最終的にやりたいことをやる際には、必要になるa,b,cの数は大体1200種類になると思います。ちなみに、これらは完全にランダムの順番で、複数のシートをまたいで記入されるので、自動的に整理するシステムができないと手に負えそうにありません。 また何度か、この掲示板を利用して質問することもあると思いますので、その時にまたご教授頂ければ幸いと存じ上げます。
- cistronezk
- ベストアンサー率38% (120/309)
ピボットテーブルを使うのが簡単です。 http://www11.plala.or.jp/koma_Excel/contents3/mame3027/mame302701.html 「ここに行のフィールドを・・・」にaの列を、「ここにデータアイテムを・・・」に数字の列をドラッグします。 別の方法としてはフィルタオプションとSUMIF関数を使う方法があります。 D列の重複なしの項目を取り出すにはフィルタオプションを使います。 http://www11.plala.or.jp/koma_Excel/contents6/mame6042/mame604203.html ただし、「リスト範囲」はA列だけにします。 E列についは以下のようになります。 =SUMIF($A$1:$A$100,$D1,$B$1:$B$100) どちらも1行目に見出しが必要です。
お礼
ビボットテーブルですね。 この機会に、ビボットテーブルの機能も勉強してみようと思います。 ご回答いただきありがとうございました。
- gimpei
- ベストアンサー率33% (262/782)
sumif関数で出来る典型的な事例ですね。 例がシートのA1セルから始まり、 データ数が100として、 E1に、=sumif($A$1:$A$100,$D$1,$B$1:$B$100) E2以降はコピペという感じで。
お礼
回答ありがとうございます。 sumif関数ですね。機能があることは予測できても、ひとつひとつ機能の説明をみて探していたら、二時間も三時間も経ってへとへとになってしまいました。本当に助かりました。 まだまだ使い始めたばかりで慣れませんが、なんとか頑張っていこうと思います。
お礼
ご回答頂きありがとうございました。 実際にやってみて、思ったとおりになりました。