VBA、数式、Power Queryを使用してExcelの空白行を削除する方法

  • これを共有
Michael Brown

このチュートリアルでは、Excelで複数の空の行を、情報を失うことなく安全に削除するためのいくつかの簡単なトリックを紹介します。 .

Excelの空白行は、特に異なるソースからのデータを組み合わせたり、どこかから情報をインポートするときに、誰もが一度は直面する問題です。 空白行は、さまざまなレベルでワークシートに多くの混乱を引き起こし、手動でそれらを削除すると、時間がかかり、エラーが発生しやすいプロセスになります。 この記事では、いくつかの簡単で信頼できる方法で空白行を削除する方法を学習します。ワークシート

    Excelで空白行を削除しない方法

    Excelで空行を削除する方法はいくつかありますが、意外と多くのオンラインリソースが、最も危険な方法、すなわち 検索&選択 > スペシャルへ > ブランク .

    この手法の何が問題なのでしょうか? 全空白 を使用すると、空白のセルが1つでもある行をすべて削除してしまうことになります。

    下の図は、左が元の表、右が結果の表ですが、結果の表では、D列の日付だけが欠落していた10行目まで、すべての不完全な行がなくなっています。

    データを壊したくなければ、空白のセルを選択して空の行を削除してはいけません。 代わりに、以下で説明するような、より配慮された方法を用いてください。

    VBAでExcelの空白行を削除する方法

    Excel VBAは、複数の空の行を含む多くのことを修正することができます。 この方法の最も良い点は、プログラミングのスキルを必要としないことです。 単に、以下のコードのいずれかを取得し、あなたのExcelで実行します(手順はこちらです)。

    マクロ1 選択した範囲の空白行を削除する

    このVBAコードは、選択された範囲内のすべての空白行を、ユーザーにメッセージやダイアログボックスを表示することなく、静かに削除します。

    これまでの手法と異なり、マクロでは、行を削除する際に 丸々一列空っぽ これは、ワークシートの関数CountAを利用して、各行の空でないセルの数を取得し、その数がゼロの行を削除します。

    Public Sub DeleteBlankRows() Dim SourceRange As Range Dim EntireRow As Range Set SourceRange = Application.Selection If Not (SourceRange Is Nothing ) Then Application.ScreenUpdating = False For I = SourceRange.Rows.Count To 1 Step -1 Set EntireRow = SourceRange.Cells(I, 1).EntireRow If Application.WorksheetFunction.CountA(EntireRow) = 0 Then EntireRow.Delete End If Next Application.ScreenUpdating= True End If End Sub

    ユーザーに機会を与えるために マクロ実行後、対象範囲を選択する このコードを使用してください。

    Public Sub RemoveBlankLines() Dim SourceRange As Range Dim EntireRow As Range On Error Resume Next Set SourceRange = Application.InputBox( _ "Select a range:" , "Delete Blank Rows" , _ Application.Selection.Address, Type :=8) If Not (SourceRange Is Nothing ) Then Application.ScreenUpdating = False For I = SourceRange.Rows.Count To 1 Step -1 Set EntireRow = SourceRange.Cells(I, 1).EntireRow IfApplication.WorksheetFunction.CountA(EntireRow) = 0 Then EntireRow.Delete End If Next Application.ScreenUpdating = True End If End Sub

    実行すると、以下のような入力ボックスが表示されるので、対象範囲を選択し、OKをクリックします。

    一瞬で選択範囲内の空白行がすべて消去され、残った行が上に移動します。

    マクロ2.Excelの空白行をすべて削除する

    削除するには 全空白行 について アクティブシート で、使用する範囲の最後の行(つまり、データのある最後のセルを含む行)を決定し、CountAが0を返す行を上方向に削除していきます。

    Sub DeleteAllEmptyRows() Dim LastRowIndex As Integer Dim RowIndex As Integer Dim UsedRng As Range Set UsedRng = ActiveSheet.UsedRange LastRowIndex = UsedRng.Row - 1 + UsedRng.Rows.Count Application.ScreenUpdating = False For RowIndex = LastRowIndex To 1 Step -1 If Application.CountA(Rows(RowIndex)) = 0 Then Rows(RowIndex).Delete End If Next RowIndex Application.ScreenUpdating = True End Sub.

    マクロ3:セルが空白の場合、行を削除する

    このマクロを使うと、指定した列のセルが空白の場合、その行全体を削除することができます。

    次のコードは、A列に空白があるかどうかをチェックします。 他の列に基づいて行を削除するには、「A」を適切な文字に置き換えてください。

    Sub DeleteRowIfCellBlank() On Error Resume Next Columns( "A" ).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub

    実のところ、このマクロでは スペシャルへ > ブランク という機能があり、この手順を手動で行うことで同じ結果を得ることができます。

    注意:このマクロは、"S "にある空白行を削除します。 ぜんし 念のため、このマクロを実行する前にワークシートのバックアップを取るのが賢明かもしれません。

    VBAでExcelの空白行を削除する方法

    Excelでマクロを使って空の行を削除するには、VBAコードを自分のワークブックに挿入するか、弊社のサンプルワークブックからマクロを実行することができます。

    ワークブックにマクロを追加する

    ワークブックにマクロを挿入するには、次の手順を実行します。

    1. 空白行を削除したいワークシートを開きます。
    2. Alt + F11キーを押して、Visual Basic Editorを開きます。
    3. 左ペインで、右クリック 本作品 をクリックします。 インサート > モジュール .
    4. コードをコードウィンドウに貼り付けます。
    5. F5キーを押して、マクロを実行します。

    詳しい手順については、「ExcelでVBAを挿入して使用する方法」をご覧ください。

    サンプルワークブックからマクロを実行する

    空白行を削除するマクロのサンプルワークブックをダウンロードし、そこから以下のいずれかのマクロを実行してください。

    DeleteBlankRows - は、現在選択されている範囲内の空の行を削除します。

    空白行の削除 - は、マクロ実行後に選択した範囲の空白行を削除し、シフトアップします。

    DeleteAllEmptyRows - は、アクティブなシート上のすべての空白行を削除します。

    DeleteRowIfCellBlank - は、特定の列のセルが空白の場合、その行を削除します。

    Excelでマクロを実行するには、次のようにします。

    1. ダウンロードしたワークブックを開き、プロンプトが表示されたらマクロを有効にします。
    2. 自分のワークブックを開き、関心のあるワークシートに移動します。
    3. ワークシートでAlt + F8キーを押し、マクロを選択し 実行 .

    Excelの空白行を削除する数式

    また、削除した内容を確認したい場合は、以下の計算式で空行を確認します。

    =IF(COUNTA(A2:D2)=0, "空白", "空白でない")

    ここで、A2 は最初のデータ行の最初の、D2 は最後の使用されたセルである。

    この数式をE2または2行目の他の空欄に入力し、フィルハンドルをドラッグして数式を下にコピーします。

    その結果、空の行には「空白」、データのあるセルが1つ以上ある行には「空白でない」と表示されます。

    COUNTA関数で空でないセルを数え、IF文でゼロの場合は「空白」、それ以外の場合は「空白でない」と返すというものです。

    実は、IFがなくてもうまくいくのです。

    =counta(a2:d2)=0

    この場合、数式は空白行に対してTRUEを、空白行以外に対してFALSEを返します。

    計算式が整ったところで、以下の手順で空行を削除します。

    1. ヘッダー行の任意のセルを選択し ソート&フィルター > フィルター について ホーム タブで フォーマット これにより、すべてのヘッダーセルにフィルタリングのドロップダウン矢印が追加されます。
    2. 数式列のヘッダーの矢印をクリックし、(すべて選択)のチェックを外し、選択した ブランク をクリックします。 よっしゃー :
    3. フィルタリングされた行をすべて選択します。 そのためには、フィルタリングされた最初の行の最初のセルをクリックし、Ctrl + Shift + End キーを押して、フィルタリングされた最後の行の最後のセルまで選択範囲を広げます。
    4. 選択範囲を右クリックし、以下を選択します。 行削除 をクリックし、本当に行全体を削除するのか確認します。
    5. Ctrl + Shift + L キーでフィルタを解除します。 または ホーム tab> ソート&フィルター > フィルター .
    6. 計算式のある列はもう必要ないので削除してください。

    その結果、空白行がなく、すべての情報が保持された、きれいな表ができました。

    ヒント:空行を削除する代わりに 空白行をコピーする これを行うには、「空白でない」行をフィルタリングして選択し、Ctrl + Cでコピーします。 その後、別のシートに切り替え、コピー先の範囲の左上セルを選択して、Ctrl + Vでペーストします。

    Power QueryでExcelの空行を削除する方法

    Excel 2016とExcel 2019では、空の行を削除する方法がもう一つあり、Power Query機能を使用します。 Excel 2010とExcel 2013では、アドインとしてダウンロードすることができます。

    重要!この方法は、次の注意事項で動作します:Power Queryは、ソースデータをExcelの表に変換し、塗りつぶしの色、ボーダー、およびいくつかの数値フォーマットなどの書式を変更します。 元のデータの書式が重要である場合は、Excelで空行を削除する他の方法を選択した方がよいでしょう。

    1. 空行を削除したい範囲を選択します。
    2. に行ってみてください。 データ tab> Get & Transform グループをクリックし テーブル/レンジから これでテーブルがPower Query Editorに読み込まれます。
    3. について ホーム タブで、Power Query Editor をクリックします。 行の削除 > 空白行の削除 .
    4. をクリックします。 閉じる & 読み込む これにより、結果のテーブルが新しいワークシートに読み込まれ、クエリエディタが終了します。

    この操作の結果、空行のない次のような表ができましたが、通貨フォーマットが失われ、日付がカスタムフォーマットではなくデフォルトフォーマットで表示されるなど、いくつか厄介な変更がありました。

    ある列のセルが空白の場合、その行を削除する方法

    このチュートリアルの冒頭で、空白を選択して空行を削除しないように注意しましたが、この方法は 欄外の空白 .

    例として、A列のセルが空である行をすべて削除してみましょう。

    1. キーとなる列(ここではA列)を選択します。
    2. について ホーム タブをクリックします。 検索&選択 > スペシャルへ または、F5キーを押しながら 特別な... ボタンをクリックします。
    3. での スペシャルへ を選択します。 ブランク をクリックします。 よっしゃー これは、A列の使用範囲の空白セルを選択するものです。
    4. 選択されたセルを右クリックし 削除... をクリックすると、コンテキストメニューが表示されます。
    5. での 削除 ダイアログボックスで 全列 をクリックし、OKをクリックします。

    完了!A列に値がない行は、もうありません。

    キー列の空白をフィルタリングしても同じ結果が得られる。

    データ下の余分な行を削除する方法

    完全に空白に見える行に、実際にはいくつかのフォーマットや印刷できない文字が含まれていることがあります。 データのある最後のセルが、本当にワークシートで最後に使われたセルかどうかを確認するには、Ctrl + End を押します。 これで、データの下に視覚的に空の行ができた場合、Excel で言えば、その行は空ではありません。 こうした行を削除するには、次のように操作します。

    1. データの下にある最初の空白行のヘッダーをクリックして選択します。
    2. Ctrl + Shift + End を押します。 これで、フォーマット、スペース、非印刷文字を含むすべての行が選択されます。
    3. 選択範囲を右クリックし 削除... > 列全体。

    比較的小さなデータセットの場合、スクロールを容易にするために、データ下の空白行をすべて削除したい場合があります。 Excelでは、未使用の行を削除する方法はありませんが、以下のことを妨げるものは何もありません。 隠蔽 その方法は次のとおりです。

    1. データのある最後の行の下の行を、そのヘッダーをクリックして選択します。
    2. Ctrl + Shift + 下矢印を押すと、選択範囲がシートの最後の行まで拡張されます。
    3. Ctrl + 9 で選択行を非表示にします。 または、選択行を右クリックし 隠す .

    への 行を非表示にする でシート全体を選択し、Ctrl + Shift + 9 ですべての線を再び表示させることができます。

    同様に、データの右側にある未使用の空白列を隠すことができます。 詳しい手順については、「Excelで未使用の行を隠して作業領域だけを表示する」を参照してください。

    Excelで空の行を削除する最速の方法

    これまでの例を読んでいると、まるでハンマーで木の実を割っているような気がしませんでしたか? Ablebitsでは、必要以上に物事を複雑にしたくないと考えています。 そこで、さらに一歩進んで、Excelの空の行を2クリックで削除する方法を作成しました。

    Ultimate Suiteをリボンに追加すると、以下のようなことが可能になります。 空の行をすべて削除する をワークシートに入力します。

    1. について Ablebits Tools タブで トランスフォーム グループをクリックします。 ブランクの削除 > 空の行 :
    2. アドインは、アクティブなワークシートからすべての空の行が削除されることを通知し、確認を求めます。 OKをクリックすると、すぐにすべての空の行が削除されます。

    以下のスクリーンショットに示すように、削除したのは 絶対空行 データを持つセルが1つもないもの。

    Ultimate Suite for Excelに含まれる素晴らしい機能を知るために、ぜひトライアル版をダウンロードしてください。

    読んでくださってありがとうございました!来週も当ブログをよろしくお願いします。

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。