• ベストアンサー

マクロで教えてください。

つい先ほど、色を塗るというマクロは教えていただきました。 http://okwave.jp/qa/q7829474.html 次に、sheet1のA列にある図番を参照しsheet2のA列の機種名に適合しない行全体を 削除したいのですが、可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

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

aspec
質問者

お礼

完璧です! ありがとうございました!

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

一行ずつ舐めていくなら、色を塗るか削除するか、どっちかすればいいですね。 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)
回答No.1

こんばんは! 一例です。 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

関連するQ&A