![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
希望動作
範囲(行12~1299)内の列Aに空白(””)がある行を削除(行ごと削除し上に詰める)する。
作成したコード
Sub 行の削除()
Dim i As Integer
For i = 12 To 1299
If Sheets("sheet1").Cells(1,i).Value = "" Then
Sheets("sheet1").Rows(i).Delete
End If
Next i
End Sub
質問内容
以上のコードで動作確認をしたところ、一部は削除出来ましたが列Aが空白の行が何行か残ってしまいました。
どうすれば列Aが空白の行全てを削除できるでしょうか?
また、行1299以降の行はいじりたくないデータなので一括削除ができればと思います。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
すでに回答がある通り、ループして順次行を削除していく場合、削除が行われる度に行がズレていきますから、For i = 1299 To 12 Step -1 によって、最終行から順に削除する必要があります。
ただし、上記方法論では、行を1行ずつ削除する動作は大変オーバーヘッドがかかり、パフォーマンスが悪いです。
そこで、下記のように、削除対象となった行を認識後に一括して削除した方が速いです。
視覚的な操作として、Ctrlを押しながら行を複数選択してから一括して削除したものと同じになります。
あとは、処理中はScreenUpdatingを無効にして画面再描画を止めることでパフォーマンス改善が図れます。
Sub 行の削除()
Application.ScreenUpdating = False
Dim ws As Worksheet
Set ws = Sheets("sheet1")
Dim i As Integer
Dim DeleteRows As Range
For i = 12 To 1299
If ws.Cells(i, 1).Value = "" Then
If DeleteRows Is Nothing Then
Set DeleteRows = ws.Rows(i)
Else
Set DeleteRows = Union(DeleteRows, ws.Rows(i))
End If
End If
Next i
Call DeleteRows.Delete
Set ws = Nothing
Application.ScreenUpdating = True
End Sub
No.4
- 回答日時:
No.2の者です。
Excel操作は、間違えですね。 すみません、無視して下さい。
あと、下記、多分間違えだと思います。 1とIが逆かと
If Sheets("sheet1").Cells(1,i).Value = "" Then
↓
If Sheets("sheet1").Cells(i,1).Value = "" Then
No.2
- 回答日時:
おはようございます。
行を削除する際は、下から消すのが基本になります。
何故なら、行を削除すると、全体的に上に詰まるから。
For i = 12 To 1299
↓
For i = 1299 To 12 Step -1
Excelですと、範囲選択して、Ctrl + G → セルを選択 → 空白セル → OK
右クリックで、削除でも、一括で削除可能だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
指定した文字があった場合、そ...
-
ハメ撮りが流出したら
-
アクセスにおいて間違って削除...
-
VBA 編集可能な範囲の指定につ...
-
すべてやりきった、大満足を意...
-
喧嘩をしてLINE削除され、 また...
-
エクセルで住所の混在する「丁...
-
エクセルVBAで行削除時にエラー...
-
マクロで特定の行まで削除する...
-
Facebookメッセンジャーの不具合
-
Excelマクロ 行の削除
-
LINEのホームのベルマークにあ...
-
変数を用いて行全体を削除する...
-
【エクセル】セル内の右側のみ...
-
lineスタンプの使用した使用履...
-
エクセルの画像貼り付けマクロ...
-
教えて!gooにはどのカテゴリが...
-
VBA IF文でORを使ったとき後ろ...
-
Twitter(X)でフォロー外の人に...
-
女友達にLINEしたら、既読スル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えてgooの機能に関するアンケ...
-
VBA:Openステートメントで開い...
-
指定した文字があった場合、そ...
-
エクセルで住所の混在する「丁...
-
回答が付かなかったので、再質...
-
もう関わりたくない人がいたらL...
-
同じ様な内容の質問を繰り返しても
-
喧嘩をしてLINE削除され、 また...
-
今日の日付が過ぎたらその行を...
-
日テレニュースHP、記事削除は...
-
Facebookメッセンジャーの不具合
-
ハメ撮りが流出したら
-
恋愛相談かてで
-
ダブルクォーテーションの削除...
-
エクセルVBAで行削除時にエラー...
-
教えてgooで誰でも月1回だけ回...
-
アクセスにおいて間違って削除...
-
女友達にLINEしたら、既読スル...
-
ウェブページへのアクセス不可 ...
-
すべてやりきった、大満足を意...
おすすめ情報