【Excel VBA】空白行を判定し削除または非表示にする方法

Excel の空白行を一括で削除または非表示にさせたいときはないでしょうか。

けど、そんな中で悩むことは、

・Excel の空白行を削除または非表示にさせるやり方がわからない。
・ショートカットやVBAで効率的に行いたいがやり方がわからない。

ですよね。

今回はそんなお悩みを解決する
Excel VBAで空白行を判定し一括で削除または非表示にする方法について
まとめます!

タカヒロ
タカヒロ
アバウトに空白行を判定し、削除/非表示にする場合は基本操作とショートカットを、
1セルづつしっかりと空白判定を行い、削除/非表示にする場合はVBAを選択しましょう。

空白行を判定し削除または非表示にする基本操作

空白行を削除する

対象の表を選択します。

ホームタブを選択します。

編集グループの検索と選択ジャンプをクリックします。

「ジャンプ」メニューのセル選択をクリックします。

「選択オプション」メニューの空白セルを選択し、OKをクリックします。

空白セルが選択されました。

セルグループの削除シートの行を削除をクリックします。

空白行が削除されましたね。

空白行を非表示にする

空白セルの選択まで上記手順を参考に実施します。

セルグループの書式非表示/再表示行を表示しないをクリックします。

空白行が非表示になりましたね。

空白行を判定し削除または非表示にするショートカット

空白行を削除するショートカット

空白行を削除するショートカットは以下の順序で操作してくdさい。

表を選択します。

Ctrl + G

Alt + S

Alt + K

Enter

Alt + H

Alt + D

Alt + R

空白行を非表示にするショートカット

空白行を非表示にするショートカットは以下の順序で操作してくdさい。

表を選択します。

Ctrl + G

Alt + S

Alt + K

Enter

Alt + H

Alt + O

Alt + U

Alt + R

空白行を判定し、行を削除、非表示にするVBA

基本操作の場合、空白判定行に空白でないセルがあったとしても、行の削除/非表示の操作を行った場合は、削除/非表示となってしまいます。

選択行のセルがすべて空白だった場合のみ処理を行いたい場合は以下のVBAを利用しましょう。

タカヒロ
タカヒロ
判定ですが、空白以外の特定の文字に対しても使えますね。

空白行を判定し行を削除するVBA

空白行を判定し行を削除するVBAとなります。
表の範囲は”A1:J7″としていますが、処理対象によって変更をしてください。
なお、指定範囲外の空白判定は行われません。

Sub 空白行を判定し削除する()

    Dim arrTemp As Variant
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
    Dim intToprw As Long
    Dim intEndrw As Long
    c = 0
    
    'スクリーンの更新を無効化
    Application.ScreenUpdating = False

    '表の値を配列に格納
    arrTemp = Range("A1:J7")
    
    '開始する行
    intToprw = LBound(arrTemp, 1)
    
    '終了する行
    intEndrw = UBound(arrTemp, 1)
    
    '行数分繰り返す
    For a = intToprw To intEndrw
    
    Debug.Print a
    Debug.Print intEndrw
    
        '列数分繰り返す
        For b = LBound(arrTemp, 2) To UBound(arrTemp, 2)
            '空白セルカウント
            If arrTemp(a, b) = "" Then
                c = c + 1
            End If
        Next
        
        '空白セルが列数分あった場合非表示
        If c = UBound(arrTemp, 2) Then
            Rows(a).Delete
            intEndrw = intEndrw - 1
            a = a - 1
            
        End If
        
        If intEndrw < 0 Then
            Exit For
        End If
        
        '空白セルカウント初期化
        c = 0
    Next

    'スクリーンの更新を有効化
    Application.ScreenUpdating = True
End Sub

削除できましたね。

空白行を判定し行を非表示にするVBA

空白行を判定し行を非表示にするVBAとなります。
削除バージョンと同じく、表の範囲は”A1:J7″としていますが、処理対象によって変更をしてください。
なお、指定範囲外の空白判定は行われません。

Sub 空白行を判定し非表示にする()

    Dim arrTemp As Variant
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
    c = 0
    
    'スクリーンの更新を無効化
    Application.ScreenUpdating = False

    '表の値を配列に格納
    arrTemp = Range("A1:J7")
    
    '行数分繰り返す
    For a = LBound(arrTemp, 1) To UBound(arrTemp, 1)
        '列数分繰り返す
        For b = LBound(arrTemp, 2) To UBound(arrTemp, 2)
            '空白セルカウント
            If arrTemp(a, b) = "" Then
                c = c + 1
            End If
        Next
        
        '空白セルが列数分あった場合非表示
        If c = UBound(arrTemp, 2) Then
            Rows(a).Hidden = True
        End If
        
        '空白セルカウント初期化
        c = 0
    Next

    'スクリーンの更新を有効化
    Application.ScreenUpdating = True
End Sub

非表示となりましたね。

VBAの実装手順

実装手順は以下の通りです。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。
※完了メッセージやステータス管理など必要に応じて実装してもらえばと思います。

さいごに

いかがでしょうか。

今回は、
Excel VBAで空白行を判定し一括で削除または非表示にする方法について
まとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。



タカヒロ

 
タカヒロ  
Excelの基礎がスルスル入ってくるAmazonランク1位の優良Excel本です。
 
この基礎本と応用技が多いエク短と組み合わせれば、短時間で誰よりもExcelが使いこなせるかと思います。
 
2022/1/21(金)23: 59までAmazon限定の「厳選ショートカットキー」DL特典アリです。 >詳細を見てみる 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です