• ベストアンサー

EXELマクロ計算式

家計簿を作成中です。前の日にちの残高から収入をたし、支出を引き残高を計算したいのですが、 B列収入、C列支出、D列残高 Range("D3").Select ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]" Range("D4").Select と言う計算式を"D3"などの数値ではなく変数など代入式をつかった式を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kbonb
  • ベストアンサー率51% (254/492)
回答No.5

こんにちは  以下でいかがでしょうか? Sub test() Dim Rng As Range Set Rng = Cells(Cells.Rows.Count, 4).End(xlUp).Offset(1) If Intersect(Rng, Cells(2, 4)) Is Nothing Then Rng.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]" Else Rng.FormulaR1C1 = "=RC[-2]-RC[-1]" End If End Sub

参考URL:
http://www2.odn.ne.jp/excel/waza/macro.html#SEC17
atk18
質問者

お礼

回答ありがとうございます。うまく動きました。式の方も、簡潔でわかりやすかったです。ホームページの方も参考に見てみたいと思います。

その他の回答 (4)

回答No.4

D列に =R[-1]C+RC[-2]-RC[-1] という式を、下へ向かって入力していきたいのなら、下記がつかえます。 For i = 3 to 10  Cells(i,4).FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]" Next i この例では10行目まで式をいれています。

atk18
質問者

補足

nishi6さんの補足とおなじです。宜しくお願いします。

  • itohjin
  • ベストアンサー率0% (0/1)
回答No.3

nishi6さんのSanshiki1と殆ど一緒です。 これの場合はCellsを使った書き方です。 Cellsの書式:Cells(行数,列数) Range("D3") = Cells(3,4) 。。D3セルは3行目の4列目 Dim tRow As Integer '行数の変数名 For tRow = 3 To 33 Cells(tRow, 4) = Cells(tRow - 1, 4) + Cells(tRow, 2) - Cells(tRow, 3) Next (この例だと、D2に前月末日の残高が入っているのが前提です。) 家計簿の記入方法に拠るかもしれませんが、マクロより式を使った方が良いかもしれません。 式の例:=D2+B3-C3 (これをD3に入れて、オートフィルをする) (この例だと、D2に前月末日の残高が入っているのが前提です。)

atk18
質問者

補足

nishi6さんの補足とおなじです。宜しくお願いします。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

マクロ記録をした算式と思いますが、下のSanshiki1は質問にある、R1C1参照形式で書いた例です。マクロ記録で作られた、Selectなどは使用していません(削除しています) xを変数にして、D3から31個(下に向かって)算式を書く例です。 2つ目の式は直接書くならこんな感じかなと作ったものです。 マクロを書く場合、セル操作については、Range、Cells、Offsetを理解すれば、たいていの記録したマクロは汎用に書き換えることができると思います。 ご参考に。 Sub Sanshiki1()   Dim x As Integer   For x = 3 To 33     Range("D" & x).Formula = "=R" & (x - 1) & "C4" & "+R" & x & "C2" & "-R" & x & "C3"   Next End Sub Sub Sanshiki2()   Dim rg As Range   For Each rg In Range("D3:D33")     With rg       .Formula = "=" & .Offset(-1, 0).Address & "+" & .Offset(0, -2).Address & "-" & .Offset(0, -1).Address     End With   Next End Sub

atk18
質問者

補足

説明が少し足りなかったようです。A列の日付、例えばA2の9/1のD2残高x円から コマンドボタンを押すと、B3の収入y円、C3の支出z円を計算し、D3残高x'円を出したいのですが、 コマンドボタンを押すたびD4、D5と計算したいのですが。 宜しくお願いします。

  • holy_s
  • ベストアンサー率20% (1/5)
回答No.1

こんばんは。 変数を使った代入式ということですが、 Sub test() Dim strWork As String Dim intI As Integer For intI = 1 To 10 strWork = "D" & intI Range(strWork).Select '----- '処理' '----- Next End Sub こういった感じでしょうか? はずしていたら、ごめんなさい。

atk18
質問者

補足

ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]" この式を組み込めばよいのでしょうか。うまく動かなかったもので・・・

関連するQ&A