teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

修正

2021/02/05 13:10

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -25,6 +25,6 @@
25
25
  おまけ。ループを使わずに式を設定すれば1行で。こんな方法もあるということで。
26
26
  ```vba
27
27
  Sub test()
28
- Range("B1").Resize(Range("E2").Value - 1).Formula = "=""part""&MOD(ROW()-2,$E$1)+1"
28
+ Range("B2").Resize(Range("E2").Value - 1).Formula = "=""part""&MOD(ROW()-2,$E$1)+1"
29
29
  End Sub
30
30
  ```

3

コード修正

2021/02/05 13:10

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -25,6 +25,6 @@
25
25
  おまけ。ループを使わずに式を設定すれば1行で。こんな方法もあるということで。
26
26
  ```vba
27
27
  Sub test()
28
- Range("E1").Resize(Range("E2").Value - 1).Formula = "=""part""&MOD(ROW()-2,$E$1)+1"
28
+ Range("B1").Resize(Range("E2").Value - 1).Formula = "=""part""&MOD(ROW()-2,$E$1)+1"
29
29
  End Sub
30
30
  ```

2

コード追記

2021/02/05 13:09

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,4 +1,4 @@
1
- [[Step](https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mod-operator)](https://akira55.com/fornext/) を使うといいでしょう。
1
+ [Step](https://akira55.com/fornext/) を使うといいでしょう。
2
2
 
3
3
  ```vba
4
4
  For x = 2 To Range("E2").Value Step Range("E1")
@@ -8,7 +8,7 @@
8
8
  Next x
9
9
  ```
10
10
 
11
- 2重ループにしなくても、Mod演算子で余りを求めてもいいでしょう。
11
+ 2重ループにしなくても、[Mod演算子](https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mod-operator)で余りを求めてもいいでしょう。
12
12
 
13
13
  ```vba
14
14
  Sub test()
@@ -19,4 +19,12 @@
19
19
  Cells(x, 2).Value = "part" & (x - 2) Mod y + 1
20
20
  Next x
21
21
  End Sub
22
+ ```
23
+
24
+ ---
25
+ おまけ。ループを使わずに式を設定すれば1行で。こんな方法もあるということで。
26
+ ```vba
27
+ Sub test()
28
+ Range("E1").Resize(Range("E2").Value - 1).Formula = "=""part""&MOD(ROW()-2,$E$1)+1"
29
+ End Sub
22
30
  ```

1

コード追記

2021/02/05 13:07

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,4 +1,4 @@
1
- Step を使うといいでしょう。
1
+ [[Step](https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mod-operator)](https://akira55.com/fornext/) を使うといいでしょう。
2
2
 
3
3
  ```vba
4
4
  For x = 2 To Range("E2").Value Step Range("E1")
@@ -6,4 +6,17 @@
6
6
  Cells(x + y - 1, 2).Value = "part" & y
7
7
  Next y
8
8
  Next x
9
+ ```
10
+
11
+ 2重ループにしなくても、Mod演算子で余りを求めてもいいでしょう。
12
+
13
+ ```vba
14
+ Sub test()
15
+ Dim x As Long
16
+ Dim y As Long
17
+ y = Range("E1")
18
+ For x = 2 To Range("E2").Value
19
+ Cells(x, 2).Value = "part" & (x - 2) Mod y + 1
20
+ Next x
21
+ End Sub
9
22
  ```