下記のような2つのシートがあり、番号がふられています。
番号「3」のようにシートAにあってシートBにない場合、
シートAの番号「3」の行をすべて削除したいのですが、コードの書き方がわかりません。
お手数ですが、コードの記載方法の理解もしたく、ご教授よろしくお願いいたします。
シートA
製品 | 名前 | 番号 |
---|---|---|
りんご | 田中 | 1 |
鈴木 | 2 | |
りんご | 井上 | 3 |
4 | ||
みかん | 井上 | 5 |
シート2
製品 | 名前 | 番号 |
---|---|---|
りんご | 田中 | 1 |
鈴木 | 2 | |
4 | ||
みかん | 井上 | 5 |
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
VBA
1Sub sample() 2 Dim sheetA As Worksheet, sheetB As Worksheet 3 Set sheetA = Sheets("シートA") 4 Set sheetB = Sheets("シートB") 5 6 Dim lastRow 7 lastRow = sheetA.Range("C" & sheetA.Rows.Count).End(xlUp).Row 8 9 Dim i 10 For i = lastRow To 2 Step -1 11 If WorksheetFunction.CountIf(sheetB.Range("C:C"), sheetA.Range("C" & i)) = 0 Then sheetA.Rows(i).Delete 12 Next 13End Sub
投稿2021/11/04 13:44
総合スコア4592
0
一例です。ご参考に。
vba
1Public Sub sample() 2 Dim r1 As Range '削除対象セル範囲 3 With Worksheets("シートA") 4 Set r1 = .Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp)) 5 End With 6 Dim r2 As Range '検索対象セル範囲 7 With Worksheets("シート2") 8 Set r2 = .Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp)) 9 End With 10 11 Dim c As Range, v As Variant 12 Dim delRows As Range '削除行を格納する 13 For Each c In r1 14 v = Application.Match(c.Value, r2, 0) '完全一致で検索 15 If IsError(v) Then '見つからなければ 16 If delRows Is Nothing Then 17 Set delRows = c.EntireRow 18 Else 19 Set delRows = Union(delRows, c.EntireRow) 20 End If 21 End If 22 Next 23 If Not delRows Is Nothing Then delRows.Delete 24End Sub
投稿2021/11/04 08:18
総合スコア34084
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
どうもありがとうございます。大変助かります。
お時間かかりますが、確認させていただきます。
2021/11/14 05:02
確認が遅くなり申し訳ございません。無事できました。ご丁寧にありがとうございました。
0
つたないですが以下のようなコードはいかがでしょう?
コード Dim LASTROW1 As Long Dim LASTROW2 As Long LASTROW1 = Worksheets(1).Cells(Rows.Count, 3).End(xlUp).Row LASTROW2 = Worksheets(2).Cells(Rows.Count, 3).End(xlUp).Row Dim k As Long Dim kk As Long Dim i As Long Dim STR1 As String Dim STR2() As String ReDim STR2(LASTROW2) As String For i = 2 To LASTROW2 STR2(i) = Worksheets(2).Cells(i, 3).Value Next i Dim TF As Boolean For k = LASTROW1 To 2 Step -1 STR1 = Worksheets(1).Cells(k, 3).Value TF = False For kk = 2 To LASTROW2 If STR1 = STR2(kk) Then TF = True End If Next kk If TF = False Then Worksheets(1).Rows(k).Delete End If Next k
投稿2021/11/04 07:34
総合スコア40
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/04 07:47
ご連絡ありがとうございます。
理解するまでに少し時間がかかりそうですので、まずはご連絡させていただきました。
よろしくお願いいたします。
2021/11/14 05:04
確認が遅くなり申し訳ございません。無事できました。ご丁寧にありがとうございました。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/14 05:01