• 締切済み

エクセルVBAについて、このようなモジュールは作れるのでしょうか?

お世話になります。 VBA構築でどうしてもできずに悩んでいます。 以下のような処理を自動で行いたいのですが、これは可能なのでしょうか。もしご存知の方がいらっしゃいましたら、ご教示願えませんでしょうか。 1.このような表があります。 【表】 -----------------------------------------------------------------    09年1月  2月  3月  4月  5月  6月  7月  8月 投資   1000  0   0  3000  0   0   3000  0      ↑投資1       ↑投資2        ↑投資3 ------------------------------------------------------------------ 償却期間 96 ※ここまでの表は事前にあります。 ------------------------------------------------------------------ 投資1  10.4  10.4  10.4  10.4 ・ ・ ・ →96セル続く 投資2             31.2 31.2 31.2 31.2 ・ ・ ・ →96セル続く 投資3                       31.2 31.2  →96セル続く ------------------------------------------------------------------- 2.この表はたとえば、09年1月に1000の投資をしたら、その1000という投資を償却期間96で割って、96ヶ月分、その1000/96=10.4という数字の減価償却コストが発生するということを意味しています。この09年1月の1000との投資を「投資1」としています。 また、さらにのちに行った投資についても、その投資を行った月から96ヶ月分、投資額/96ヶ月の数字が減価償却コストとして続くことを意味します。 このような表をもっと簡単に作りたいと考えています。 米しるしのところまでは表として作成しているのですが、この投資の減価償却コストの配分を計算しようとすると、その投資の数だけ同じ計算が必要となり、投資の数が100などある場合、計算ができなくなってしまいます。これを考慮し、VBAを組みたいと考えた次第です。 お忙しい中大変恐れ入りますが、ご検討のほど何卒よろしくお願い申し上げます。

みんなの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

画像が小さすぎてよく見えないのですが、展開させる対象数値はC11セルから右に連続しているのですね? (本来、そのような配置は、こんな見にくい画像ではなく質問文の中で説明してほしいです。) 投資1の減価償却コスト展開先は投資額と同列の31行目から右にセル96個分ですね? 減価償却コストは割り切れなくともいいのですね? 投資2以下はそれぞれ1行ずつ下げていけばいいのですね? 列数はエクセル2007でないと256列で終わりになりますが、それは考慮しなくてもいいのですね? 31行目以下のAとB列はセルが結合されているのかな?そこに減価償却1~と入れればいいのですね? 以上の前提で Sub test01() Dim Rng As Range, c As Range Dim i As Long Set Rng = Range(Cells(11, "C"), Cells(11, Columns.Count).End(xlToLeft)) MsgBox Rng.Count & "か月(11行目の数値入力済みセル)を展開対象にします。" For Each c In Rng If c.Value <> 0 Then c.Offset(20 + i).Resize(, 96).Value = c.Value / 96 Cells(c.Offset(20 + i).Row, "A").Value = "減価償却" & i + 1 i = i + 1 End If Next c End Sub

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

質問者ほど読者は切実性が無いので、質問の意味が良くわからないと思う。 各月、月1セルの表で スタートからエンド月まで毎月同じ額(最終月は変わっても良いと思うが)を自動セットするぐらい、質問するほどの問題ではななかろう。スタート列からエンド(終期)列までForNextででも用いて繰り返せばしまいでは。 これでは、私が質問を理解していないなら、もう少し具体的に質問を書くこと。スタート月を自動的に割り出すなら、投資1 といった区別が、何処かのシートのセルに必要でしょう。 また実例画像が小さくて良く見えない。 >VBA構築!でどうしてもできずに といった大げさな問題ではないと思う。 関数でも出来るような直感がするが。

JUN3845
質問者

お礼

大変失礼しました。

すると、全ての回答が全文表示されます。

関連するQ&A