ここから本文です

EXCEL VBA 指定条件で特定の複数行を削除する方法 A列に文字列 みかん・りんご...

アバター

ID非公開さん

2020/7/601:30:00

EXCEL VBA 指定条件で特定の複数行を削除する方法

A列に文字列
みかん・りんご・いちご・ぶどう・すいか・すもも
の順で繰り返し入力されています(順番は固定)。

必ずみかんから始まりますが、終わる果物名はランダムです(みかん・りんご・いちごの時もあれば、みかん・りんご・いちご・ぶどう・すいか・すももで終わるときもあります。)
B列にはランダムで数字が入力されています。

この時、B列の数字が1の時、該当する果物が含まれる、みかんから次のみかんの前の果物までのグループを行ごと削除する方法を教えてください。

例:
A|B
みかん|4
りんご|43
いちご|47
ぶどう|9
みかん|4
りんご|43
いちご|1
ぶどう|9
すいか|12
すもも|14
みかん|3
りんご|212
いちご|93
ぶどう|12

削除したい行
みかん|4
りんご|43
いちご|1 ←
ぶどう|9
すいか|12
すもも|14

閲覧数:
95
回答数:
2
お礼:
500枚

違反報告

回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

hot********さん

2020/7/605:54:48

(削除があるので)最終行から1行目まで順に調べて行って、途中でみかんがあったら、そのグループが削除対象ならそのグループを削除します。
極端に削除グループが多くなければそれほど遅くないと思います。


Sub sample()
Dim f As Boolean
Dim lastRow As Long
Dim gr As Long
Dim r As Long
'
lastRow = Range("A" & Rows.Count).End(xlUp).Row 'A列最終行
gr = lastRow '注目グループの最終行(初期値=最終行)
f = False '削除フラグ(初期値=リセット)
For r = lastRow To 1 Step -1 '注目行をA列最終行から1行まで逆順に
If Range("B" & r).Value = 1 Then f = True 'B列注目行の値が1なら削除フラグセット(現在のグループ削除)
If Range("A" & r).Value = "みかん" Then 'A列注目行の値がみかんなら(グループの先頭)
If f = True Then '削除フラグがセットされていたら
Range(r & ":" & gr).Delete '現在のグループ削除
f = False '削除フラグリセット
End If
gr = r - 1 '次(1つ上)の行をグループ最終行に設定
End If
Next
End Sub

プロフィール画像

カテゴリマスター

taihenda****さん

2020/7/605:05:18

削除する行が多いと重くなるので並べ替えを使っています。



Sub Test()
Dim i As Long, rw As Long, rng As Range
rw = Cells(Rows.Count, 1).End(xlUp).Row + 1
Application.ScreenUpdating = False
Columns(1).Insert
Rows(1).Insert
For i = 2 To rw
If Cells(i, 2) = "みかん" Then
Cells(i, 1) = Application.Max(Range(Cells(1, 1), Cells(i - 1, 1))) + 1
Else
Cells(i, 1) = Cells(i - 1, 1)
End If
Next
For i = 2 To rw
If Cells(i, 3) = 1 Then
Cells(i, 1).Offset(-5).Resize(12).Replace Cells(i, 1), "a"
End If
Next
Range("A2").CurrentRegion.Sort _
key1:=Range("A2"), order1:=xlAscending, Header:=xlNo
Set rng = Columns(1).Find("a")
If Not rng Is Nothing Then
Range(rng, Cells(rw, 1)).EntireRow.Delete
End If
Columns(1).Delete
Rows(1).Delete
End Sub

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる