Sub gyo_sakujo()
Dim gyo As Long
Dim gmax As Long
gmax = Range("A" & Rows.Count).End(xlUp).Row
For gyo = gmax To 2 Step -1
If Range("A" & gyo).Value = "行削除" Then
Range("A" & gyo).EntireRow.Delete
End If
Next
End Sub
よろしくお願いします。
2019/02/06 00:05
小川 慶一さんのコメント
(コメントID: 5988)
ひろしさん:
たとえば、以下の要領で複数行をまとめて削除することもできます。
Sub hoge()
Dim cFm As Long
Dim cTo As Long
cFm = 3
cTo = 17
Range("A" & cFm & ":A" & cTo).EntireRow.Delete
End Sub
Sub gyo_sakujo()
Dim gyo As Long
Dim gmax As Long
gmax = Range("A" & Rows.Count).End(xlUp).Row
Dim Rng As Range 'Rngオブジェクト変数
For gyo = gmax To 2 Step -1
If Range("A" & gyo).Value = "行削除" Then
If Rng Is Nothing Then
'Rngオブジェクト変数に行設定(最初に見つかった行)
Set Rng = Rows(gyo)
Else
'Rngオブジェクト変数に行追加(以降に見つかった行)
Set Rng = Union(Rng, Rows(gyo))
End If
End If
Next
If Not Rng Is Nothing Then
'Rngオブジェクト変数に入れた行を一括削除
Rng.Delete
End If
End Sub
ひろしさんの投稿
(投稿ID: 4359)
行の削除について、質問があります。
下記のように、A列に"行削除"と文字が発見されたら、
対象の列を削除させるマクロを作成しました。
しかし、データ数が膨大になると(20,000行以上とか)
処理時間が、かなり掛かってしまうようです。
データ数が、多い場合は別の方法が良いのでしょうか?
ご教授頂けると幸いです。
よろしくお願いします。
小川 慶一さんのコメント
(コメントID: 5988)
たとえば、以下の要領で複数行をまとめて削除することもできます。
なので、以下の流れになるかと思います。
[1] 削除対象行に印をつけていく
[2] 印のある列で並べ替える
[3] 上述の要領で削除する
あとは、削除じゃなくてオートフィルタでも十分なら、オートフィルタしてしまうとか。
オートフィルタのマクロについては発展編1で取り扱っています。
本動画でもそういうアレンジを紹介すればできたのですが、あまりいろいろ脱線していると本論がおろそかになるので、触れずにいました。
ひろしさんのコメント
(コメントID: 5989)
早速、教えて頂いた手順で実行してみます。
基本をベースとして、色々アレンジする習慣をつけます。
また、講座を復習し実践を重ね、引き出しを増やしていきたいと思います。
小川 慶一さんのコメント
(コメントID: 5990)
他の動画で学んだことにヒントはないか?と考える習慣をつけましょう!
田中 宏明さんのコメント
(コメントID: 6008)
基礎編に出てこないやり方になりますが、引き出しを増やすという意味で、以下手順で処理できる方法を紹介します。
[1] 削除対象行をRngオブジェクトに入れる
[2] 削除は最後にまとめて行う