- ベストアンサー
マクロで教えてください。
つい先ほど、色を塗るというマクロは教えていただきました。 http://okwave.jp/qa/q7829474.html 次に、sheet1のA列にある図番を参照しsheet2のA列の機種名に適合しない行全体を 削除したいのですが、可能でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 たびたびごめんなさい。 投稿後、もう一度質問文を読み返してみて・・・ Sheet2のデータを削除ですかね? もしそうであれば↓のコードに訂正してください。 Sub test() Dim i As Long Dim wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") For i = wS2.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If WorksheetFunction.CountIf(wS1.Columns(1), wS2.Cells(i, 1)) = 0 Then wS2.Rows(i).Delete End If Next i End Sub どうも失礼しました。m(_ _)m
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
一行ずつ舐めていくなら、色を塗るか削除するか、どっちかすればいいですね。 sub macro1() dim r as long dim h as range worksheets("Sheet2").select for r = range("A65536").end(xlup).row to 2 step -1 set h = worksheets("Sheet1").range("A:A").find(what:=cells(r, "A"), lookin:=xlvalues, lookat:=xlwhole) if h is nothing then ’無い cells(r, "A").entirerow.delete shift:=xlshiftup else ’ある application.intersect(activesheet.usedrange, cells(r, "A").entirerow).interior.colorindex = h.offset(0, 1).interior.colorindex end if next end sub
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 Sheet1のデータを削除するわけですよね? 標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub test() Dim i As Long Dim wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") For i = wS1.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If WorksheetFunction.CountIf(wS2.Columns(1), wS1.Cells(i, 1)) = 0 Then wS1.Rows(i).Delete End If Next i End Sub こんな感じではどうでしょうか?m(_ _)m
お礼
完璧です! ありがとうございました!