【VBA】条件にあてはまる列を一括削除!サンプルデータを使って実演!

f:id:yshgs_elec:20210407220215p:plain

この記事では、データがまとまった表に対して、指定した条件にあてはまる列を一括削除していく方法をご紹介していきます。

 

データ整理後に、使えないデータを一括排除したいときなんかに活用できると思います。

今回は以下の表の最大値が0.85未満のdataを一括削除してみようと思います。

条件に応じて行削除するマクロを適用するサンプルデータ

(この場合は、data5とdata9が条件に当てはまりますね。)

※この記事の内容を実行すると、列がまるごと消えます。

空欄状態になるわけではありませんのでご注意ください。

 

なお、今回のスキルは以前紹介した指定した列を削除するスキルを応用したものになっています。

基本からしっかり勉強したい人は、以下の記事も参考にしてください。

◆合わせて読みたい

【エクセルVBA】指定した列を削除する方法!VBAでの実行方法まで!

 

それでは早速やっていきます!

スポンサーリンク

VBAの環境構築

冒頭にご紹介した作業はVBAというエクセルにあらかじめ備わっているプログラミングを用いて実行していきます。

 

VBAを一度も使用したことがない人は、以下の記事を参考に実行環境を整えておきましょう。

【初心者用】エクセルマクロ(VBA)の始め方を詳細解説

「VBAくらい知ってるぜ!」

という方は本記事の続きをご覧ください。

スポンサーリンク

条件に当てはまる列を一括削除するVBAコード

それでは本題に入っていきましょう。

おさらいですが、今回は以下のようにデータの最大値が0.85未満の列を一括削除する方法をご紹介していきます。

条件に応じて行削除するマクロを適用するサンプルデータ

以下が上記の作業を実行してくれるサンプルコードです。

 

◆シートの列削除サンプルコード①

Sub Macro1()
    i = 2
    Do Until Cells(2, i) = ""
        max_value = WorksheetFunction.Max(Range(Cells(3, i), Cells(12, i)))
        If max_value < 0.85 Then
            Columns(i).Delete
        Else
          i = i + 1
        End If
    Loop
End Sub

IF, Do Loop, WorksheetFunction等、色々使っているので少しわかりにくいと思いますが、やっていることは実はシンプル。

①一番左の列の最大値を算出

②①の値が0.85未満ならその列を削除

③列をずらしながら①、②を繰り返す

ということをやっているだけです。

 

注意点として、Do Loopで使っている i のカウントは列を削除した場合は行わないという点です。

列を削除した時点で列が左詰めで移動してきますので、i のカウントを増やさなくても次の列を参照してくれるためです。

※このあたりはあなたのやりたいことに応じて修正していく必要がありますのでご注意ください。

 

最後にコードを実行してみましょう。

◆実行前の状態(該当部分は赤文字にしておきました。)

マクロ実行前のサンプルデータ

◆実行後の状態

マクロ実行後のサンプルデータ

問題なく、該当部分が削除されていることが確認できました。

スポンサーリンク

おわりに

というわけで今回は、データがまとまった表に対して、指定した条件にあてはまる列を一括削除していく方法をご紹介しました。

 

大量にデータ収集したものの、データとして不適切なものを含んでいるということは多々あるものです。

それらの不適切データを排除するときに、今回紹介したスキルは非常に役に立つはずです。

 

ぜひやり方をマスターしておきましょう!

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

 

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

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

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

 

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

↓ 応援ボタン

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

それではまた!

コメント

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