- ベストアンサー
エクセル2013 マクロ ご教示ください
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 >また、Sheet1のV列に反映させた後 >Sheet2の該当行は削除したいです。 を見逃していました。 前回のコードは消去して、↓のコードに変更してください。 「★」の行を追加しています。 Sub Sample2() Dim i As Long, c As Range, lastRow As Long, wS As Worksheet Set wS = Worksheets("Sheet2") Application.ScreenUpdating = False lastRow = wS.Cells(Rows.Count, "B").End(xlUp).Row wS.Range("A:A").Insert Range(wS.Cells(2, "A"), wS.Cells(lastRow, "A")).Formula = "=C2&""_""&F2&""_""&H2" With Worksheets("Sheet1") For i = 2 To .Cells(Rows.Count, "D").End(xlUp).Row Set c = wS.Range("A:A").Find(what:=.Cells(i, "D") & "_" & .Cells(i, "F") & "_" & .Cells(i, "N"), _ LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then .Cells(i, "V") = "ナシ" Else .Cells(i, "V") = wS.Cells(c.Row, "G") wS.Cells(c.Row, "A").EntireRow.Delete shift:=xlUp '★ End If Next i End With wS.Range("A:A").Delete Application.ScreenUpdating = True End Sub 失礼しました。m(_ _)m
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 Sheet1のV列表示形式は日付にしておいてください。 標準モジュールです。 Sub Sample1() Dim i As Long, c As Range, lastRow As Long, wS As Worksheet Set wS = Worksheets("Sheet2") Application.ScreenUpdating = False lastRow = wS.Cells(Rows.Count, "B").End(xlUp).Row wS.Range("A:A").Insert Range(wS.Cells(2, "A"), wS.Cells(lastRow, "A")).Formula = "=C2&""_""&F2&""_""&H2" With Worksheets("Sheet1") For i = 2 To .Cells(Rows.Count, "D").End(xlUp).Row Set c = wS.Range("A:A").Find(what:=.Cells(i, "D") & "_" & .Cells(i, "F") & "_" & .Cells(i, "N"), _ LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then .Cells(i, "V") = "ナシ" Else .Cells(i, "V") = wS.Cells(c.Row, "G") End If Next i End With wS.Range("A:A").Delete Application.ScreenUpdating = True End Sub こんな感じではどうでしょうか?m(_ _)m
お礼
動作確認しました。 思い通りの事ができました。 ありがとうございました。