質問編集履歴

2

2021/03/07:不要コードを削除しました。

2021/03/07 01:40

投稿

jabe
jabe

スコア43

test CHANGED
File without changes
test CHANGED
@@ -65,8 +65,6 @@
65
65
  Dim resultS As Variant '転記先検索結果
66
66
 
67
67
 
68
-
69
- 'Set TM = Workbooks.5Open(TenkiMoto & "\テスト\転記元.xlsm") '転記元ファイル名を変数格納
70
68
 
71
69
  Set TM = ThisWorkbook 'このマクロがあるファイルが転記元
72
70
 

1

2021/3/7:回答内容を元に編集しました。

2021/03/07 01:40

投稿

jabe
jabe

スコア43

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  ```VBA
40
40
 
41
- Sub 別ブックへの転記()
41
+ Sub 別ブックへの転記△2()
42
42
 
43
43
  Const TenkiMoto As String = "C:\テスト" '転記元ファイルパス
44
44
 
@@ -66,53 +66,51 @@
66
66
 
67
67
 
68
68
 
69
- Set TM = Workbooks(TenkiMoto & "\テスト\転記元.xlsm") '転記元ファイル名を変数格納
69
+ 'Set TM = Workbooks.5Open(TenkiMoto & "\テスト\転記元.xlsm") '転記元ファイル名を変数格納
70
70
 
71
- Set TS = Workbooks(TenkiSaki & "\転記先.xlsx") '転記先ファイル名を変数格納
71
+ Set TM = ThisWorkbook 'このマクロがあるファイルが転記元
72
72
 
73
- Set wsM = Workbooks(TM).Worksheets("sheet1") '転記元シートを変数格納
74
-
75
- Set wsS = Workbooks(TS).Worksheets("sheet1") '転記先シートを変数格納
73
+ Set TS = Workbooks.Open(TenkiSaki & "\転記先.xlsx") '転記先ファイル名を変数格納
76
-
77
- lastrowM = wsM.Cells(Rows.Count, 1).End(xlUp).Row '転記元シート最終行数抽出
78
74
 
79
75
 
80
76
 
81
- Workbooks.Open TS '転記先ファイル開く
77
+ Set wsM = TM.Worksheets(1) '転記元シートを変数格納
82
78
 
83
- lastrowS = wsS.Cells(Rows.Count, 1).End(xlUp).Row '転記先シート最終行抽出
79
+ Set wsS = TS.Worksheets(1) '転記先シートを変格納
84
80
 
85
81
 
86
82
 
87
- For i = 2 To lastrowM '転記元検索値が存在するまで繰り返す
83
+ lastrowM = wsM.Cells(wsM.Rows.Count, 1).End(xlUp).Row '転記元シート最終行数抽出
88
84
 
89
- numberM = wsM.Cells(i, 2) '転記元検索値を変数格納
90
-
91
- resultS = wsS.Range(wsS.Cells(2, 1), wsS.Cells(lastrowM, 2)).Find(numberM, lookat:=xlWhole) '転記先へ検索
92
-
93
-
94
-
95
- If resultS Is Nothing Then '検索値と合致しない場合以下処理実行
96
-
97
- j = Cells(Rows.Count, "A").End(xlUp).Row + 1 '合致したら、入力セルの次抽出
85
+ lastrowS = wsS.Cells(wsS.Rows.Count, 1).End(xlUp).Row '転記先シート最終抽出
98
-
99
- wsS.Cells(1, j) = numberM.Value '次行へ転記
100
86
 
101
87
 
102
88
 
103
- ElseIf Not resultS Is Nothing Then '検索値と合致した場合以下処理実行
89
+ For i = 2 To lastrowM '転記元検索値が存在するまで繰り返す
104
90
 
105
- wsS.Cells(resultS.Row, 1).Value = numberM.Value '合致セルへ上書き
91
+ numberM = wsM.Cells(i, 1).Value '転記元検索値を変数格納
106
92
 
107
-
93
+ If WorksheetFunction.CountIf(wsS.Range("A2").Resize(lastrowS - 1, 1), numberM) = 0 Then
108
94
 
95
+ lastrowS = lastrowS + 1
96
+
97
+ wsS.Cells(lastrowS, 1) = numberM
98
+
99
+ wsS.Cells(lastrowS, 2) = wsM.Cells(i, 2).Value
100
+
101
+ wsS.Cells(lastrowS, 3) = wsM.Cells(i, 3).Value
102
+
103
+ Else 'こちらから合致した場合の上書き処理をしたいと考えております。
104
+
105
+
106
+
109
- End If
107
+ End If
108
+
109
+ Next i
110
+
111
+ TS.Close SaveChanges:=True
110
112
 
111
113
 
112
-
113
- Next i
114
-
115
- Workbooks(TenkiSaki & "\転記先.xlsx").Close
116
114
 
117
115
  End Sub
118
116