【エクセルVBA】欠損データがある行を行間詰めで一括削除する方法!

 

この記事では、エクセルにまとめられたデータに欠損がある場合に、その行を丸ごと削除し、かつ削除により発生した行間を上詰めする方法をご紹介していきます。

 

AIの学習データを準備した後などによく出くわす状況ですよね。

ぜひ自動化して効率化していきましょう。

 

それではさっそくやっていきましょう。

 

スポンサーリンク

この記事での実施内容の確認

実際の処理に入っていく前に、この記事の内容とあなたのやりたいことが一致していなければ意味がありませんので、まずはこの記事の内容を画像を使って詳しく解説していきます。

 

今回は以下のように一部に欠損が生じているデータを用います。

(わかりやすいように色付けしています。)

欠損データを含んだサンプルデータ

このように複数のデータがとびとびで空欄になっていることがわかると思います。

また、2行連続で欠損している場合もありますね。

 

このデータをVBAを使って一瞬で以下のように修正していきます。

欠損データを削除するマクロを実行した結果

黄色のセルがすべてなくなり、なくなった行分すべて上に詰められていることがわかると思います。

 

今回はこんなことをやっていきます。

あなたのやりたいことと一致していれば是非続きをご覧ください。

 

スポンサーリンク

VBAの実行環境を整える

今回はVBAというツールを使って実行していきます。

VBAはエクセルさえ使えれば誰でも利用できるものですが、使い始めるときにすこし設定がいるのでまだその設定をしていない方は以下の記事を参考にまずはVBAの実行環境を整えておきましょう。

エクセルマクロ(VBA)の始め方!初心者向けに画像を使って詳細解説

 

VBAなんて余裕だぜ!という方はさっそくコードを書いていきましょう。

 

スポンサーリンク

空欄行を一括削除するVBAコード

早速ですが、以下がさきほど紹介した処理を実行してくれるサンプルコードです。

Sub delete_blank_row()
    Dim i As Integer, num_data As Integer, num_blank As Integer
    num_data = WorksheetFunction.CountA(Range(Cells(1, 1), Cells(1, 1000)))
    i = 1
    Do Until num_blank = num_data
        num_blank = WorksheetFunction.CountBlank(Range(Cells(i + 1, 1), Cells(i + 1, num_data)))
        If num_blank > 0 Then
            Rows(i + 1).Delete Shift:=xlUp
        Else
            i = i + 1
        End If
    Loop
End Sub

 

なお、今回は以下の前提で書いています。

①1行目のヘッダーには空欄がない

②データの列数は1000列まで

 

なかなかないとは思いますが、もしこの前提から外れている場合はコードを修正する必要がありますのでご注意ください。

 

このコードを実行すると、冒頭に述べたような結果が得られるはずです。

ぜひあなたも適当なデータを準備してやってみましょう!

 

スポンサーリンク

おわりに

というわけで今回は欠損データを有する行を一括削除する方法をご紹介しました。

AIの学習データを構築する際などにぜひご活用ください。

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました