回答編集履歴
4
説明追記
test
CHANGED
@@ -23,6 +23,9 @@
|
|
23
23
|
Next
|
24
24
|
End Sub
|
25
25
|
```
|
26
|
+
|
27
|
+
`R[-2]C`は自分のセルより2つ上のセルという意味になります。
|
28
|
+
|
26
29
|
---
|
27
30
|
実は、ループしなくても下記の1行で同じ結果になります。
|
28
31
|
|
3
コード追記
test
CHANGED
@@ -12,10 +12,22 @@
|
|
12
12
|
End Sub
|
13
13
|
```
|
14
14
|
|
15
|
+
---
|
15
|
-
|
16
|
+
R1C1形式の相対参照を使えばもう少しシンプルになります。
|
16
17
|
|
17
18
|
```vba
|
18
|
-
Sub macro
|
19
|
+
Sub macro2()
|
20
|
+
Dim i As Integer
|
21
|
+
For i = 1 To 100
|
22
|
+
Worksheets("Sheet1").Cells(3, i).FormulaR1C1 = "=R[-2]C+R[-1]C"
|
23
|
+
Next
|
24
|
+
End Sub
|
25
|
+
```
|
26
|
+
---
|
27
|
+
実は、ループしなくても下記の1行で同じ結果になります。
|
28
|
+
|
29
|
+
```vba
|
30
|
+
Sub macro3()
|
19
31
|
Worksheets("Sheet1").Cells(3, 1).Resize(,100).Formula = "=A1+A2"
|
20
32
|
End Sub
|
21
33
|
```
|
2
コード修正
test
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
-
|
2
|
-
26 を 100 にすればいいだけです。
|
1
|
+
~~26 を 100 にすればいいだけです。~~
|
2
|
+
Addressプロパティでセルアドレスを取得すればいいでしょう。
|
3
3
|
|
4
4
|
```vba
|
5
5
|
Sub macro1()
|
6
6
|
Dim i As Integer
|
7
|
+
With Worksheets("Sheet1")
|
7
|
-
For i = 1 To 100
|
8
|
+
For i = 1 To 100
|
8
|
-
|
9
|
+
.Cells(3, i).Formula = "=" & .Cells(1, i).Address(0, 0) & "+" & .Cells(2, i).Address(0, 0) & "2"
|
9
|
-
Next
|
10
|
+
Next
|
11
|
+
End With
|
10
12
|
End Sub
|
11
13
|
```
|
12
14
|
|
@@ -14,6 +16,7 @@
|
|
14
16
|
|
15
17
|
```vba
|
16
18
|
Sub macro1()
|
17
|
-
Worksheets("Sheet1").Cells(3, 1).Resize(,100).Formula = "=A1+
|
19
|
+
Worksheets("Sheet1").Cells(3, 1).Resize(,100).Formula = "=A1+A2"
|
18
20
|
End Sub
|
19
21
|
```
|
22
|
+
A3に式を入力して、右へ100列分オートフィルしたのと同じ動作になります。
|
1
コード微修正
test
CHANGED
@@ -14,6 +14,6 @@
|
|
14
14
|
|
15
15
|
```vba
|
16
16
|
Sub macro1()
|
17
|
-
Worksheets("Sheet
|
17
|
+
Worksheets("Sheet1").Cells(3, 1).Resize(,100).Formula = "=A1+B2"
|
18
18
|
End Sub
|
19
19
|
```
|