人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

「在庫月数」について、エクセルで自動計算・自動更新できる関数を教えていただきたいです。
具体的には、下記のような計画で、在庫・販売計画などを修正したとき、自動で「在庫月数」も算出される関数が知りたいです。また、点数も多くデータ容量を考えると、シンプルで短い関数を教えていただければベストです。
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へ更新される

よろしくお願いします。

以上




●質問者: O___range
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:1月 4月 エクセル シンプル データ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● SALINGER
●80ポイント

たぶん、シンプルで短いワークシート関数は無いと思います。

ワークシート関数で実現する方法としてはこちらを参考にすればできます。

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にすればできます。

◎質問者からの返答

どうもご回答ありがとうございます。

やはりシンプルで短い関数はないでしょうかね?。

教えてもらったユーザー定義関数でトライしてみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ