具体的には、下記のような計画で、在庫・販売計画などを修正したとき、自動で「在庫月数」も算出される関数が知りたいです。また、点数も多くデータ容量を考えると、シンプルで短い関数を教えていただければベストです。
1月 2月 3月 4月 5月
販売計画 500 1000 500 500 500…
在庫 1600 800 …
在庫月数 2.2 1.6 …
修正例:
・1月在庫を1600→800へ修正したとき、在庫月数は自動で0.8へ自動更新される
・1月在庫を1600→2100へ修正したとき、在庫月数は自動で3.2へ更新される
・4月販売を500→1000へ修正したとき、1月在庫月数は自動で2.1へ、2月在庫月数も自動で1.3へ更新される
よろしくお願いします。
以上
たぶん、シンプルで短いワークシート関数は無いと思います。
ワークシート関数で実現する方法としてはこちらを参考にすればできます。
http://www.keep-on.com/excelyou/2001lng2/200106/01060025.txt
ただし、この方法でやるには行を追加したり、項目を入れ替えたりと月毎の在庫月数を求めるのには向かなかったりします。
じゃあ、ワークシート関数に無ければ作ってしまえということで、ユーザー定義関数を紹介します。
ユーザー定義関数の使い方
http://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html
以下をコピペして
Function ZaiGetu(target1 As Range, target2 As Range) As Double ZaiGetu = funcMacro(target1.Value, 0, target1.Offset(-1, 1)) End Function Function funcMacro(zaiko As Long, c As Double, target As Range) As Double If target.Value = "" Then funcMacro = c Else If zaiko > target.Value Then c = c + 1 funcMacro = funcMacro(zaiko - target.Value, c, target.Offset(0, 1)) Else funcMacro = c + zaiko / target.Value End If End If End Function
1月の在庫月数を表示するセルの数式を
=ZaiGetu(1つ上の在庫のセル、販売計画の2月から最後までの月のセル)
にして、右にドラックして数式をコピーすることで使います。
小数点以下一桁にするには、セルの書式設定で数値にして、小数点以下を1にすればできます。
どうもご回答ありがとうございます。
やはりシンプルで短い関数はないでしょうかね~。
教えてもらったユーザー定義関数でトライしてみます。