質問編集履歴

7

画像差し替え

2019/09/18 13:13

投稿

yama0131
yama0131

スコア16

test CHANGED
File without changes
test CHANGED
@@ -112,7 +112,7 @@
112
112
 
113
113
  ### 補足情報(FW/ツールのバージョンなど)
114
114
 
115
- ![イメージ説明](95fe59c70f4b18f3173027720ec22439.png)
115
+ ![イメージ説明](21d7b2b6537d489e5d34508fdc23001f.png)
116
116
 
117
117
  左がbook1で右がbook2です。
118
118
 

6

画像差し替え

2019/09/18 13:13

投稿

yama0131
yama0131

スコア16

test CHANGED
File without changes
test CHANGED
@@ -112,7 +112,7 @@
112
112
 
113
113
  ### 補足情報(FW/ツールのバージョンなど)
114
114
 
115
- ![イメージ説明](6fc9a374e4221f2f29dca204cc325d1e.png)
115
+ ![イメージ説明](95fe59c70f4b18f3173027720ec22439.png)
116
116
 
117
117
  左がbook1で右がbook2です。
118
118
 

5

追記

2019/09/18 13:09

投稿

yama0131
yama0131

スコア16

test CHANGED
File without changes
test CHANGED
@@ -50,49 +50,53 @@
50
50
 
51
51
  ```VBA
52
52
 
53
+ Public Sub ブック間転送()
54
+
53
- 'ループ用の変数
55
+ 'ループ用の変数
54
56
 
55
57
  Dim m As Long
56
58
 
57
59
  Dim n As Long
58
60
 
59
-
61
+ Dim row1 As Long 'Book1 O列へ書き込む行番号
60
62
 
61
- Dim s1 As Worksheet
63
+ Dim s1 As Worksheet
62
64
 
63
- Dim s2 As Worksheet
65
+ Dim s2 As Worksheet
64
66
 
65
-
67
+
66
68
 
67
69
  Set s1 = Workbooks("book1.xlsx").Worksheets(1)
68
70
 
69
71
  Set s2 = Workbooks("book2.xlsx").Worksheets(1)
70
72
 
71
-
73
+ row1 = 2
72
74
 
73
75
  'それぞれのシートの比較行を最終行までループ
74
76
 
75
77
  For m = 2 To s1.Cells(Rows.Count, 4).End(xlUp).Row
76
78
 
77
- For n = 2 To s2.Cells(Rows.Count, 4).End(xlUp).Row
79
+ For n = 2 To s2.Cells(Rows.Count, 4).End(xlUp).Row
78
-
79
-
80
-
81
- 'book1とbook2のD列の比較 これだと列ごとに比較してしまうので
82
-
83
-   'book1の(m,4)をbook2のD列の全てのデータと比較して、転記が終わってから次の処理に移りたいです。
84
-
85
- If s1.Cells(m, 4).Value = s2.Cells(n, 4).Value Then
86
-
87
- s2.Cells(n, 25).Value = s1.Cells(m, 15).Value
88
80
 
89
81
 
90
82
 
83
+ 'book1とbook2のD列の比較 これだと列ごとに比較してしまうので
84
+
85
+ 'book1の(m,4)をbook2のD列の全てのデータと比較して、転記が終わってから次の処理に移りたいです。
86
+
87
+ If s1.Cells(m, 4).Value = s2.Cells(n, 4).Value Then
88
+
89
+ s1.Cells(row1, "O").Value = s2.Cells(n, "Y").Value
90
+
91
+ row1 = row1 + 1
92
+
91
- End If
93
+ End If
94
+
95
+ Next
92
96
 
93
97
  Next
94
98
 
95
- Next
99
+ End Sub
96
100
 
97
101
  ```
98
102
 

4

追記

2019/09/18 12:42

投稿

yama0131
yama0131

スコア16

test CHANGED
File without changes
test CHANGED
@@ -114,7 +114,7 @@
114
114
 
115
115
  book1のD列のd2をbook2のD列から検索して、Y列の1001という値をbook1のO列に転記したいです。
116
116
 
117
- れを1ずつ繰り返すような処理です。
117
+ d1なら対応するO列に1000が入ります。これを1ずつ繰り返すような処理です。
118
118
 
119
119
 
120
120
 

3

補足情報に画像付きで説明を載せました

2019/09/18 12:34

投稿

yama0131
yama0131

スコア16

test CHANGED
File without changes
test CHANGED
@@ -108,6 +108,14 @@
108
108
 
109
109
  ### 補足情報(FW/ツールのバージョンなど)
110
110
 
111
+ ![イメージ説明](6fc9a374e4221f2f29dca204cc325d1e.png)
112
+
113
+ 左がbook1で右がbook2です。
114
+
115
+ book1のD列のd2をbook2のD列から検索して、Y列の1001という値をbook1のO列に転記したいです。
116
+
117
+ それを1つずつ繰り返すような処理です。
118
+
111
119
 
112
120
 
113
121
  どうぞよろしくお願いいたします。

2

コード追記

2019/09/18 12:22

投稿

yama0131
yama0131

スコア16

test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,49 @@
50
50
 
51
51
  ```VBA
52
52
 
53
+ 'ループ用の変数
53
54
 
55
+ Dim m As Long
56
+
57
+ Dim n As Long
58
+
59
+
60
+
61
+ Dim s1 As Worksheet
62
+
63
+ Dim s2 As Worksheet
64
+
65
+
66
+
67
+ Set s1 = Workbooks("book1.xlsx").Worksheets(1)
68
+
69
+ Set s2 = Workbooks("book2.xlsx").Worksheets(1)
70
+
71
+
72
+
73
+ 'それぞれのシートの比較行を最終行までループ
74
+
75
+ For m = 2 To s1.Cells(Rows.Count, 4).End(xlUp).Row
76
+
77
+ For n = 2 To s2.Cells(Rows.Count, 4).End(xlUp).Row
78
+
79
+
80
+
81
+ 'book1とbook2のD列の比較 これだと列ごとに比較してしまうので
82
+
83
+   'book1の(m,4)をbook2のD列の全てのデータと比較して、転記が終わってから次の処理に移りたいです。
84
+
85
+ If s1.Cells(m, 4).Value = s2.Cells(n, 4).Value Then
86
+
87
+ s2.Cells(n, 25).Value = s1.Cells(m, 15).Value
88
+
89
+
90
+
91
+ End If
92
+
93
+ Next
94
+
95
+ Next
54
96
 
55
97
  ```
56
98
 

1

追記

2019/09/18 09:43

投稿

yama0131
yama0131

スコア16

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,10 @@
1
1
  VBAについてです。
2
2
 
3
+ ### 前提・実現したいこと
3
4
 
5
+
6
+
7
+ VBAで2つのブックを比較して、データの転記がしたいです。
4
8
 
5
9
  Book1(sheet1) 転記するシート 
6
10
 
@@ -16,7 +20,7 @@
16
20
 
17
21
  book1のD列の2行目のデータをbook2のD列から検索して、合致しているデータがあれば、
18
22
 
19
- book2のY列のデータをbook1の2行目のO列に転記して、
23
+ book2の合致した行にあるY列のデータをbook1の2行目のO列に転記する。
20
24
 
21
25
  この動作をbook1のD列の3行目、4行目...最終行まで繰り返し処理をしたいです。
22
26
 
@@ -32,4 +36,36 @@
32
36
 
33
37
 
34
38
 
39
+
40
+
41
+ ### 発生している問題・エラーメッセージ
42
+
43
+
44
+
45
+ book1のD2のデータをbook2のD列から検索して、検索が終わったら次のbook1のD3のデータを検索する、という動きがifやforなどを使えばできそうなのはなんとなくわかるのですが、具体的にどうすればいいのかわかりません。涙
46
+
47
+ ### 該当のソースコード
48
+
49
+
50
+
51
+ ```VBA
52
+
53
+
54
+
55
+ ```
56
+
57
+
58
+
59
+ ### 試したこと
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+ ### 補足情報(FW/ツールのバージョンなど)
68
+
69
+
70
+
35
71
  どうぞよろしくお願いいたします。