OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

EXELマクロ計算式

  • 暇なときにでも
  • 質問No.132639
  • 閲覧数88
  • ありがとう数1
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 13% (143/1041)

家計簿を作成中です。前の日にちの残高から収入をたし、支出を引き残高を計算したいのですが、
B列収入、C列支出、D列残高
Range("D3").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]"
Range("D4").Select
と言う計算式を"D3"などの数値ではなく変数など代入式をつかった式を教えてください。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.5
レベル12

ベストアンサー率 51% (254/492)

こんにちは

 以下でいかがでしょうか?

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
お礼コメント
atk18

お礼率 13% (143/1041)

回答ありがとうございます。うまく動きました。式の方も、簡潔でわかりやすかったです。ホームページの方も参考に見てみたいと思います。
投稿日時 - 2001-09-11 12:07:43
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル4

ベストアンサー率 20% (1/5)

こんばんは。 変数を使った代入式ということですが、 Sub test() Dim strWork As String Dim intI As Integer For intI = 1 To 10 strWork = "D" & intI Range(strWork).Select '----- '処理 ...続きを読む
こんばんは。

変数を使った代入式ということですが、

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

お礼率 13% (143/1041)

ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]"
この式を組み込めばよいのでしょうか。うまく動かなかったもので・・・
投稿日時 - 2001-09-10 15:43:01

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

マクロ記録をした算式と思いますが、下のSanshiki1は質問にある、R1C1参照形式で書いた例です。マクロ記録で作られた、Selectなどは使用していません(削除しています) xを変数にして、D3から31個(下に向かって)算式を書く例です。 2つ目の式は直接書くならこんな感じかなと作ったものです。 マクロを書く場合、セル操作については、Range、Cells、Offsetを理解すれば、たいてい ...続きを読む
マクロ記録をした算式と思いますが、下の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

お礼率 13% (143/1041)

説明が少し足りなかったようです。A列の日付、例えばA2の9/1のD2残高x円から
コマンドボタンを押すと、B3の収入y円、C3の支出z円を計算し、D3残高x'円を出したいのですが、
コマンドボタンを押すたびD4、D5と計算したいのですが。
宜しくお願いします。
投稿日時 - 2001-09-10 15:44:46
  • 回答No.3
レベル1

ベストアンサー率 0% (0/1)

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 ...続きを読む
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

お礼率 13% (143/1041)

nishi6さんの補足とおなじです。宜しくお願いします。
投稿日時 - 2001-09-10 15:50:29
  • 回答No.4
レベル9

ベストアンサー率 50% (37/73)

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行目まで式をいれています。 ...続きを読む
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

お礼率 13% (143/1041)

nishi6さんの補足とおなじです。宜しくお願いします。
投稿日時 - 2001-09-10 15:51:53
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ