A列の最終行位置を把握した後で、最終行から次の処理を繰り返することで簡単に処理することができます。
処理するシートをsheetとして、Rows.CountとEnd(xlUp)を使って、最下行「r」を取得します。なお、sheetは、ブック内ののシートを示すデータ構造でありシート名を"Sheet1"とした場合には、「Set sheet = Worksheets("Sheet1")」で設定することができます。
r = sheet.Cells(sheet.Rows.Count, 1).End(xlUp).Row
次に最終行から以下の処理を行います。
行(r)のA列セルが「空白」か、「特定の文字」を含んでいるのか調べます。「特定文字をふくんでいるか」では、VBAのInStr関数を使っています。
0 < InStr(sheet.Cells(r, 1).Value, "あ")であれば、r行A列のセルに"あ"が含まれていればその位置を示しますので0以上であれば、"あ"を含んでいることになります。
そこで、行削除を行うことになりますが、
sheet.Rows(r).Delete Shift:=xlUp
とすることで、該当行を削除してその行よりあとの部分が上がります。
そこで、rを前の行にして同じ処理を続け、rが5になるまで続けます。
全体とすると次のようなコードとなります。
Dim sheet As Worksheet
Dim r As Long
Set sheet = Worksheets("Sheet1")
r = sheet.Cells(sheet.Rows.Count, 1).End(xlUp).Row
Do While (5 <= r)
If sheet.Cells(r, 1).Value = "" Or 0 < InStr(sheet.Cells(r, 1).Value, "あ") Then
sheet.Rows(r).Delete Shift:=xlUp
End If
r = r - 1
Loop
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/12 23:59