SMALL関数を使って効率的に日付別の売上集計をする これは多分かなり便利

たくさんの営業部員がいて、たくさんの売上件数を集計しなければいけないとき、大変ですよね。
全員の売上をまとめて、日付別に集計しろ、ということになったらそれだけで気分もうんざり、なんてことになってしまうこともあるのではないでしょうか?
そんなときに使えるのが、SMALL関数を使ったこの集計方法です。

送信者 OpenOffice
このファイルは、SKYDRIVEからcalc149.odsをダウンロードしてください。

上の画像では日付別に集計しろ、という指示にも関わらず、元になる左側の表は、担当者別に並んでいます。
これを右側の表にまとめる、奇跡の関数がSMALL関数です。
関数名:SMALL関数
書式:=SMALL(処理対象のデータが入力されている範囲;何番目に小さい値を返すか)
何ができる:処理対象のデータが入力されている範囲から、値の小ささのランクが指定された小ささの値を返す
平たく書くと:=SMALL($A$1:$A$300;1)で、A1:A300の間で一番小さい値、10月1日を返します。



SMALL関数を使って、元表の中で一番小さい(古い)日付がSMALL関数を用いた結果、10月1日とG2セルに入力されました。
H2セルとI2セルでは、SUMIF関数を使って、元表から10月1日を検索して、それぞれ売上集計と件数集計を行なっています。
次のJ2セルでは、COUNTIF関数を使って10月1日の件数を集計しています。

そして、一見どうでもよさそうに見えるこの件数こそが、この表の核になっています。
SMALL関数では、同じ小ささの値が複数あると、2番目に小さい値も1番目に小さい値と同じ値が返されてしまいます。
例えば上の例の場合、=SMALL($A$1:$A$300;2) で、10月2日が返されず、10月1日が返されてしまいます。
さらに=SMALL($A$1:$A$300;3) でも10月1日が返されます。
理由は10月1日が3件あるからです。
そこで、G3セルでは、SUM($J$2:J2) でG3セルよりもひとつ上の行までの件数を集計して過去の日付までの件数の合計を求めています。そして、その件数よりもひとつ大きい値を返すように、1を足しています。
集計の起点は$J$2と、絶対参照で固定しておきます。

この処理の結果、G3セルには、4番目に小さい(古い)日付の10月2日が返されます。

これで、担当者別に並んでいた表を変形せずに、日付別の集計を行なうことができました。
新しい日付が発生すればその都度ひとつ上の行(Gれ列からJ列)をコピーして一つしたの行に貼り付けるだけでOKです。
おめでとう! これで早く帰れますね。(だれのことや??)

この記事をクリップ!