2012年5月11日金曜日

sumproduct関数のまとめ


 今週は「sumproduct関数」を取り上げました。
 今回は簡単にまとめていきます。



 まずは星5つで評価します。
 
 仕事術      sumproduct関数
 容易さ      ★★★
 頻度       ★★
 効果(速度・費用) ★★★



 Excelのデータ処理に困っている・・・。


 例えば、商品ごとの単価と売れた個数が1行1商品で並んでいるような
 データで、全商品の売上金額の合計を一発で求めたい。

 1列追加して、単価と個数を掛け算して、商品ごとの売上をまずは計算し、
 それらをsum関数で合計すればできるのですが、割とよく行う計算なので
 簡単な関数か何かで行いたい。



 そこで見つけたのが、「sumproduct関数」というものでした。


 使い方は簡単。

 例えば以下のデータを集計します。

 例:売上データ

A列 B列 C列
 1行 商品 単価 個数
 2行 A \200 22
 3行 B \550 10
 4行 C \300 3


 1、引数を作成する

 掛け合わせたい列範囲を()と*を使って表現します。

 (B2:B4)*(C2:C4)


 2、関数を作成する

 1で作成した引数をそのまま設定します。

 =sumproduct((B2:B4)*(C2:C4))

 たったこれだけです。



 この方法を実施する時にうまくいきそうなポイントが3点あります。



 1、引数に指定している各列の行数は揃える


 例えば、B列(B2:B4)とC列(C2:C4)を掛け合わせて、その合計を
 求めたいときは、=sumproduct((B2:B4)*(C2:C4))と指定しました。

 このときに、B列とC列の行数が異なると、どの行同士を掛け合わせたら
 よいか分からなくなりエラーとなってしまうので、行数は揃えましょう。



 2、文字列なども条件に指定できる


 例えば、以下のようなデータがあったとして、商品Aのみの合計を求めたい
 とします。


A列 B列 C列
 1行 商品 単価 個数
 2行 A \200 22
 3行 B \550 10
 4行 C \300 3
 5行 A \200 14
 6行 B \550 7
 7行 A \200 28


 そのような場合に、以下のように条件を指定すると、商品Aのみの合計金額を
 一発で求められます。

 =SUMPRODUCT((A2:A7="A")*(B2:B7)*(C2:C7))


 このように条件設定してあげることで、一部のデータを抽出することができて
 便利です。



 3、別の形式でも引数を指定できる

 2でご紹介した条件設定を行わずに、単純に列同士を掛け合わせて合計する場合
 は、以下のように複数の引数として指定することもできます。

 B2:B4 , C2:C4 , D2:D4

 (元々はこちらが正式な使い方なのですが・・・)



 ということで、ポイントを押さえて使用すると効果が高いのは
 よくわかりましたが、何回か実施する内に課題も見えてきました。



 1、式が複雑になりやすい


 掛け合わせたい列や指定したい条件が、2-3つ程度であればさほど問題
 ないのですが、それ以上に多くなると、関数自体がかなり長くなって
 きます。

 さらにifなど他の関数と組み合わせると、長く複雑になることがでてきます。

 式を作るのに時間がかかりすぎてしまっては本末転倒なので、そのような時は、
 無理に一つの式で行おうとせず、複数の式に分割するようにしましょう。



 2、複数の引数を指定する使い方では、条件設定ができない


 単純に列同士を掛け合わせて合計する場合は、以下のように複数の引数として
 指定することもできます。

 =sumproduct(B2:B4 , C2:C4 , D2:D4)


 ただし、この形式で指定するときは、A2:A4="A"のような条件設定は
 行えません。

 使い分けを行うのが面倒であれば、以下のように条件を*で結合して、
 常に1つの引数で表現する形式をお奨めします。

 =sumproduct((B2:B4)*(C2:C4)*(D2:D4))



 上記の点に気をつければ、一発でほしい結果が得られるのでとても便利な
 関数です。



 いかがだったでしょうか?

 「sumproduct関数」の話は以上です。

0 件のコメント:

コメントを投稿