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

質問編集履歴

2

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

2021/03/07 01:40

投稿

jabe
jabe

スコア43

title CHANGED
File without changes
body CHANGED
@@ -32,7 +32,6 @@
32
32
  Dim numberM As Variant '転記元検索値
33
33
  Dim resultS As Variant '転記先検索結果
34
34
 
35
- 'Set TM = Workbooks.5Open(TenkiMoto & "\テスト\転記元.xlsm") '転記元ファイル名を変数格納
36
35
  Set TM = ThisWorkbook 'このマクロがあるファイルが転記元
37
36
  Set TS = Workbooks.Open(TenkiSaki & "\転記先.xlsx") '転記先ファイル名を変数格納
38
37
 

1

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

2021/03/07 01:40

投稿

jabe
jabe

スコア43

title CHANGED
File without changes
body CHANGED
@@ -18,7 +18,7 @@
18
18
  ### 該当のソースコード
19
19
 
20
20
  ```VBA
21
- Sub 別ブックへの転記()
21
+ Sub 別ブックへの転記△2()
22
22
  Const TenkiMoto As String = "C:\テスト" '転記元ファイルパス
23
23
  Const TenkiSaki As String = "C:\Users\nakagami\Desktop\サンプル" '転記先ファイルパス
24
24
  Dim TM As Workbook '転記元ファイル名変数
@@ -32,30 +32,29 @@
32
32
  Dim numberM As Variant '転記元検索値
33
33
  Dim resultS As Variant '転記先検索結果
34
34
 
35
- Set TM = Workbooks(TenkiMoto & "\テスト\転記元.xlsm") '転記元ファイル名を変数格納
35
+ 'Set TM = Workbooks.5Open(TenkiMoto & "\テスト\転記元.xlsm") '転記元ファイル名を変数格納
36
+ Set TM = ThisWorkbook 'このマクロがあるファイルが転記元
36
- Set TS = Workbooks(TenkiSaki & "\転記先.xlsx") '転記先ファイル名を変数格納
37
+ Set TS = Workbooks.Open(TenkiSaki & "\転記先.xlsx") '転記先ファイル名を変数格納
37
- Set wsM = Workbooks(TM).Worksheets("sheet1") '転記元シートを変数格納
38
- Set wsS = Workbooks(TS).Worksheets("sheet1") '転記先シートを変数格納
39
- lastrowM = wsM.Cells(Rows.Count, 1).End(xlUp).Row '転記元シート最終行数抽出
40
38
 
41
- Workbooks.Open TS '転記先ファイル開く
39
+ Set wsM = TM.Worksheets(1) '転記元シートを変数格納
42
- lastrowS = wsS.Cells(Rows.Count, 1).End(xlUp).Row '転記先シート最終行抽出
40
+ Set wsS = TS.Worksheets(1) '転記先シートを変格納
43
41
 
44
- For i = 2 To lastrowM '転記元検索値が存在するまで繰り返す
45
- numberM = wsM.Cells(i, 2) '転記元検索値を変数格納
46
- resultS = wsS.Range(wsS.Cells(2, 1), wsS.Cells(lastrowM, 2)).Find(numberM, lookat:=xlWhole) '転記先へ検索
47
-
48
- If resultS Is Nothing Then '検索値と合致しない場合以下処理実行
49
- j = Cells(Rows.Count, "A").End(xlUp).Row + 1 '合致したら、入力セルの次抽出
42
+ lastrowM = wsM.Cells(wsM.Rows.Count, 1).End(xlUp).Row '転記元シート最終抽出
50
- wsS.Cells(1, j) = numberM.Value '次行へ転記
43
+ lastrowS = wsS.Cells(wsS.Rows.Count, 1).End(xlUp).Row '転記先シート最終行数抽出
51
44
 
45
+ For i = 2 To lastrowM '転記元検索値が存在するまで繰り返す
52
- ElseIf Not resultS Is Nothing Then '検索値と合致した場合以下処理実行
46
+ numberM = wsM.Cells(i, 1).Value '転記元検索値を変数格納
47
+ If WorksheetFunction.CountIf(wsS.Range("A2").Resize(lastrowS - 1, 1), numberM) = 0 Then
48
+ lastrowS = lastrowS + 1
49
+ wsS.Cells(lastrowS, 1) = numberM
53
- wsS.Cells(resultS.Row, 1).Value = numberM.Value '合致セルへ上書き
50
+ wsS.Cells(lastrowS, 2) = wsM.Cells(i, 2).Value
54
-
51
+ wsS.Cells(lastrowS, 3) = wsM.Cells(i, 3).Value
52
+ Else 'こちらから合致した場合の上書き処理をしたいと考えております。
53
+
55
- End If
54
+ End If
55
+ Next i
56
+ TS.Close SaveChanges:=True
56
57
 
57
- Next i
58
- Workbooks(TenkiSaki & "\転記先.xlsx").Close
59
58
  End Sub
60
59
 
61
60
  ```