
希望動作
範囲(行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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Excelマクロのコードができる方に質問します。
Visual Basic(VBA)
-
vba 環境依存文字がListViewボックスに設定すると化ける
Visual Basic(VBA)
-
VBA 過去のファイル内の同じオブジェクトを一括削除
Visual Basic(VBA)
-
4
VBAでtxtファイルを読み込む際にtabを認識したい
Visual Basic(VBA)
-
5
Excel教えてほしいです。
Excel(エクセル)
-
6
リストボックスについて
Excel(エクセル)
-
7
VBA RemoveDuplicatesで「アプリケーション定義またはオブジェクト定義のエラーです」
Visual Basic(VBA)
-
8
VBA 自作カレンダー コマンドボタンについて
Visual Basic(VBA)
-
9
【関数orVBA】カーソルのある行を黄色にし、A列の値を別シートに表示できますか?
Visual Basic(VBA)
-
10
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
11
シート名をセルの値にするマクロについての質問
Visual Basic(VBA)
-
12
excel vba で教えてください。(高速化)
Excel(エクセル)
-
13
VBAのコードについて
Visual Basic(VBA)
-
14
マクロ 関数を使った抽出でエラーになってしまう
Visual Basic(VBA)
-
15
Excelマクロ&VBAでユーザーフォームで3択問題を作ってみました。
Visual Basic(VBA)
-
16
エクセルの都道府県名連続入力を抽出削除するには
Excel(エクセル)
-
17
vbsでファイルを非表示
Visual Basic(VBA)
-
18
VBAでsubをcallした場合のみエラーになる
Visual Basic(VBA)
-
19
Excel VBAでフォルダ内の全テキストファイルの任意データを取得について
Visual Basic(VBA)
-
20
VBAで、オートフィルタで非表示になっている行の高さを取得したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
もう関わりたくない人がいたらL...
-
5
ウェブページへのアクセス不可 ...
-
6
LINEのホームのベルマークにあ...
-
7
インスタグラムのギャラリーの...
-
8
【エクセル】セル内の右側のみ...
-
9
指定した文字があった場合、そ...
-
10
メーリングリストから特定の人...
-
11
エクセルで下の空白行を削除したい
-
12
(Access)複数条件の重複デー...
-
13
データの削除件数が知りたいです
-
14
バッチファイルを使用したsql@p...
-
15
iPad カレンダー
-
16
ダブルクォーテーションの削除...
-
17
アクセスにおいて間違って削除...
-
18
MSNの検索履歴の消去方法につい...
-
19
文字列末尾のスペースを削除したい
-
20
告白してフラれた相手の連絡先...
おすすめ情報
公式facebook
公式twitter