[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件に合わない行をマクロを使って削除』(akimama)
よろしくお願いします。
1000件近くあるデータを、必要行だけ取り出したいのですが A列の値を検査し、必要なら次の行へ、不必要なら行ごと削除、 というようにマクロで処理したいと思っています。
Dim i As Integer ---> カウンタ
i = 2 ---> 1行目は項目名が入っているので2行目からスタート
If 【不要なら】Then Rows(i & ":" & i).Select ---> 行を選択 Selection.Delete Shift:=xlUp ---> 削除 Else i = i + 1 ---> 必要なら削除せず次の行へ End If
というところまではなんとかやりましたが for文でセルの値が空になるまで繰り返したいのですが どのように書けばいいのか教えて下さい。
ちなみにこのマクロには他の処理をどんどん加える予定なので フィルタで絞って削除等の手作業は使えません。
明日、レスを確認させていただきますので よろしければ明日もお付き合い下さい。
その書き方だとDo Loopの方が良いのでは?
例: Sub sample1() Dim i As Long i = 2 Do While Cells(i,"a") <> "" If Cells(i,"a").Value = "それ" Then Rows(i).Delete Else i = i + 1 End If Loop End Sub (seiya)
↓こちらが応用出来るかもしれません。 [[20060831181930]]『A列のセルがブランクであれば行ごと削除』(mutsu) (純丸)(o^-')b
>ちなみにこのマクロには他の処理をどんどん加える予定なので とあるので AdvancedFilterで処理してみました 削除するシート Sheet1 範囲がわからないのでA・B列でしています。 Sheet2を作業用シートとして使用しています。
Sub Test() Dim myRng1 As Range Dim myRng2 As Range Dim myRng3 As Range Dim myShi1 As Worksheet Dim myShi2 As Worksheet
Set myShi1 = Worksheets("Sheet1") Set myShi2 = Worksheets("Sheet2") myShi2.Cells.ClearContents
With myShi1 Set myRng1 = .Range(.Range("A1"), .Range("A65536").End(xlUp).Offset(0, 1)) Set myRng2 = myShi2.Range("A1:A2") myShi2.Range("A1").Value = .Range("A1").Value End With
myShi2.Range("A2").Value = "'<>" & "不要データ"
myRng1.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=myRng2, CopyToRange:=myShi2.Range("A4")
myRng1.ClearContents With myShi2 Set myRng3 = .Range(.Range("A4"), _ .Range("A65536").End(xlUp).Offset(0, 1)) End With
myRng3.Copy myShi1.Range("A1") myShi2.Cells.ClearContents
End Sub
(MM)
こんばんは MMさんのコードはDeleteってどこにも無いんですけど間違いではないですか? どこで削除してるんですかね〜??
皆様ありがとうございました。 Do Whileですっきりと処理できました。 またお願いします。(akimama)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.