Excelで表の不要な行を一瞬で削除する方法(YouTube文字起こし)

この記事は、下記動画の文字起こしです。


00:01 チャプター1
皆さん、excelで不要の行を消すときって、どうやってますか?例えば、ここにこういう行があって、さらにここにも行があって、というように、 離れた位置に行があるとき、消すのって大変ですよね。 
ましてや、これ、今ここではほんの数行しかないですけども、これが数千行とか、数万行あった時、どうしますか?

00:21 チャプター2
これ、手で1個1個ポチポチと行を選んで消していくのって、とても大変ですよね。 
そんなお悩みを解決する「不要な行を一瞬で削除する方法」というものを、ここで紹介したいと思います。 
はい、まず現在の削除方法ってのは、先ほども言ったように、1つ1つ行を選択しなければいけないという、とても手のかかる方法しかないわけですね。

00:44 チャプター3
そんなふうにやってますと、何万行何千行ってあった時に、ものすごく膨大な時間がかかる割には、全然生産性の上がるものは得られないといった、そういったデメリットがあります。 
これを解消していく方法というのが、次に示すこのスライドになってます。 
vbaを使うんですけども、これで不要な行を一括して選択して、そして削除するといった手法になります。

01:10 チャプター4
まずどうするかというと、最初に表のフィルター機能というものを使います。 
これは別にvbaではなくて、excelの標準的な機能となっているんですけど、これでテーブル全体を選択していただいて、そしてフィルター機能をかけます。で、不要な行の条件

01:30 チャプター5
を選んであげて、それを非表示にするというところが、まず第1ステップです。 
で、非表示にすればいいじゃないかって思うかもしれないんですけども、これを身内で使ってる時は確かに非表示でいいかもしれないんですけども、例えば、 外部の人に特定の条件を満たす行だけを持ったテーブルを送りたいと言った時に、非表示ではいけないですよね。非表示にした部分を削除する必要が出てくる。そういった時って、結構たくさんあると思うんですよね。

01:56 チャプター6
その時にですね、以下のvbaコードを使うと、これで非表示行の一括選択ができて、そして削除ができるというような内容になってます。 
まずここから3ステップのコードの説明していくんですけども、まずvbaを動かす際に、対象のブックを選ぶところですよね。ここでブックとシートの変数を定義して、

02:21 チャプター7
行を削除したいテーブルを持っているブックを選んで、シートを選んで、変数に格納してあげて、さらに表が記載されているセルのアドレスというものを、ここで変数に入れてあげます。 
そして、さらにここが肝なんですけども、ここでもう1つレンジオブジェクトを定義してるんですが、ここでようやく不要な行を選択するためのレンジオブジェクトというものを作っています。

02:51 チャプター8
では、この次のコードで、その不要な行を一括して選択するコードをお見せします。それがこちらになっています。先ほどのテーブルの分だけ、このfor文を回してあげます。で、ここがミソです。はい、セルの高さが0っていう時に、この文を動かしてあげるわけですね。セルの高さが0ってことは、このフィルター機能で不要な行が非表示になってるといることの証なんですね。

03:20 チャプター9
非表示ってどういうことかっていうと、透明になるわけじゃなくて、単にExcelの上ではセルの高さが0になってるということなんですね。で、この0の時に先ほど定義したraアンダーバーっていうこのレンジオブジェクトに、どんどんその不要な行のレンジを格納していきます。 
まず、このraアンダーバーがまだ何も含んでない場合、ナッシングの場合は、

03:46 チャプター10
for文で1行1行確認していくんですけども、このHeightが0だった行を丸ごとこのレンジオブジェクト、raアンダーバーというオブジェクトに格納しておきます。 
で、そうするとこれがナッシングじゃなくなるので、2回目以降は最初にこの

04:08 チャプター11
不要な行をraアンダーバーに格納した後に、さらに別の離れた領域を格納する場合は、こちらのApplication.Unionというものを使って、さらにこのraアンダーバーに不要な行を追加していくわけですね。これ、単純に不要な行を1行1行を削除していくっていうこともできるんですけども

04:32 チャプター12
これ、「ra_.Delete」っていうコードで行を削除できるんですけども、Deleteっていう操作が意外と時間かかるんですよ。 
なので、このレンジオブジェクトに格納して、削除してって1回1回やってると、ものすごく時間かかります。 
なので、非連続な領域として、このraアンダーバーにApplication.Unionでどんどんどんどんレンジを追加していってあげるんですね。非連続な領域をどんどんどんどん追加していった

05:00 チャプター13
そういうレンジオブジェクトを作ってあります。こうすることで、不要な行・非連続なところにある不要な行を全て含んだレンジオブジェクト、raアンダーバーというオブジェクトが完成します。 
そして、このraアンダーバーにすべての不要な行を取り込んだ後に、最後に1回だけdeleteということを行います。で、ここではDelete shift:=xlUpということをしてあげることで、行を削除したら上に詰めるという、そういった操作を行ってあげます。

05:31 チャプター14
これ、ほぼ一瞬でこれを行うことで、この不要な行を一括選択して、そして削除することができるコードになってます。はい、皆さんですね、これぜひ使ってみてください。で、もう1つここでポイントなんですけども、はい、これは非連続領域の選択っていうことなんですよ。先ほど、

05:51 チャプター15
1行1行不要な行をDeleteコードで削除していくのは、ものすごく時間がかかると言いました。そんな時に使えるのは、このApplication.Unionというコードですね。 
これは、何かっていうと、あるレンジに2つのレンジを合わせたレンジオブジェクトを作るということなんですよね。で、さらに、ここに同じオブジェクトを

06:15 チャプター16
置いてあげることで、この新しいレンジをどんどんどんどん追加していくことができるんですね、このレンジオブジェクトの中に。そうすることで、既存の領域に任意の領域を追加、例えば最初ここだけこのレンジオブジェクトに含まれてたら、さらに追加でここにここのレンジオブジェクトを含めて、さらにここのレンジオブジェクトを含めるということができます。

06:34 チャプター17
こうすることで任意の条件を満たす非連続な領域を指定することができます。 
こうして指定したレンジオブジェクトを作るとことで、最後に1回だけRange.Deleteとしてあげることができます。 
つまり、これで非連続な領域、非連続な

06:52 チャプター18
不要な行を一瞬で削除するといったことがこの方法で達成できるわけです。 
はい、皆さんぜひやってみてください。はい、ご視聴ありがとうございました。皆さん、よければ、チャンネル登録もよろしくお願いします。 
では、失礼します。

#excel  #excelvba #一括削除 #不要 #一瞬 #YouTube  #文字起こし

この記事が気に入ったらサポートをしてみませんか?