「必要な部分だけを表示したいのに、望んでいる結果が得られない」
「マウスで一つずつ行を削除していて、大変…」
「条件に一致するデータを抽出したい」
という悩みはありませんか?
ここでは、企業でパソコン講師を務めた私が、必要な行だけを残して、不要な行を処理する方法を紹介します。手動でサッとやる方法から自動で一気に処理する方法まで、使いどころも含めて、紹介していきます。
ぜひ読んで実践してみてください。
なお、エクセルマクロを使って自動化する方法も紹介します。エクセルマクロを使えば、ボタン一つで不要な行を削除できます。ただ、マクロとかVBAと聞くと、「よくわからない…」という方も多いはず。
このブログの中で、エクセルマクロVBAについても記事を書きましたので、あわせてお読みいただくと、より理解が深まるでしょう。
目次
不要な行を消したい|データが少ないなら、この2つ
ショートカットキーを使う方法を2つ紹介します。マウスを使うより、断然ラクに不要な行を削除できるようになります。
使いどころ
ここで紹介するのは、手動で効率よく削除していく方法です。ですので、削除したいデータの行数が10~50行程度です。それを超える行数の場合は、後述していますので、そちらをご覧ください。
削除法1|行をショートカットキーで消す
マウスを使うより、ショートカットキーを使うとラクに行を削除できます。まずは、ショートカットキーで行を削除する方法から紹介します。
手順は以下
[2] 不要な行の全体を選択:Shift + Space (半角モードにしておく)
[3] 選択した行を削除:Ctrl + –
動画での解説(無音なので、音を気にせず再生できます)
不要な行を選択して一行ずつ、地道にやっていきます。
使いどころ
対象となるデータの行数が10~20までは、この方法は効果を発揮します。しかし、行数が増えると面倒になってきます。
単純作業で、ミスも増えてしまうので、対象が20行を越えるなら、他の方法を試しましょう。
削除法2|マクロで一行ずつ削除する|
カンタンに作れるマクロを設定して、不要な行を1つずつ手動で選択しつつ、不要な行を削除するやり方です。
マクロの設定は、以下のコードを使います。
1 2 3 4 5 6 |
Sub gyo_sakujo() Dim i As Long i = Selection.Row Rows(i).Select Selection.Delete Shift:=xlUp End Sub |
このマクロは、選択しているセルの行を削除するコードです。たとえば、セルB8を選択していたら、8行目を1行分削除。セルC11を選択していたら、11行目を1行分削除します。
このマクロにショートカットキーを割り当てることで、キーボードだけで削除できるようになります。
ショートカットキーを割り当てる方法はコチラの記事で紹介していますので、合わせて読んでみてください。
注意:マクロを使用すると、Ctrl + Z (もとに戻る)が適応されません。
紹介しているのは、あくまで目視で確認しながら、削除する方法です。行数が多い場合は、おすすめしません。
不要な行を「まとめて」一括削除したいときの方法4つ
不要な行を一気に削除したい場合は、ここで紹介する方法を試してみてください。
ただ、あなたが削除したい条件に応じて、「いいやり方」と「わるいやり方」があります。ぜひこのまま読みすすめていって、あなたに適した方法をチョイスしてみてください。
一括削除1|重複した行だけを削除したい|「重複の削除」を使う
「重複の削除」という機能を使って、削除する方法です。
「重複を削除したい」には、これがオススメです。
たとえば、行ごとに列Bと列Cに含まれる値を比較して、一致している行があれば、削除することが可能です。
手順は以下
[2] 重複の削除を選択
[3] 列Bと列CのチェックボックスをONにする(ここでは、列B:カテゴリー、列C:キーワード)
[4] OKを押す
動画での解説(無音なので、音を気にせず再生できます)
使いどころ
この方法は、チェックをいれた箇所が完全に一致しないと削除されません。たとえば、「ABC」と「ABCD」は一致しないので、削除対象になりません。
このように部分一致も削除したい場合は、あまり使えません。
一括削除2|条件にあった行を削除したい|フィルターを使う
フィルターとは、条件に合致したものだけを表示する方法です。
フィルターを利用して、不要な行を削除する方法を紹介します。
大まかな流れは、
フィルターで削除したい行だけを表示
→行の削除
→フィルター機能を解除する。
すると、削除したい行が除去されたデータに作り替えることができる。というカンジです。
具体的な手順は以下の通りです。
[2] 削除したい条件だけを表示
[3] 表示された行を削除
[4] フィルターの条件をもとにもどす
動画での解説(無音なので、音を気にせず再生できます)
使いどころ
データの中で、特定の条件だけを削除したい場合にかなり効果を発揮します。
しかし、フィルターでの抽出は、単語だけに適応されるので、色のついた部分だけを削除したい場合、セルの中の一部の単語が含まれる場合だけを削除したい場合は、使えません。
そういった場合は、次の方法をオススメします
一括削除3|条件を細かく振って削除|マクロVBAで一括削除
マクロで自動化する方法です。
マクロってなに?と思われた方は、こちらの記事で詳しく紹介していますので、あわせてよんでみてください。
では、具体的なやりかたを紹介します。
[2] 挿入で新しい「標準モジュール」を起動
[3] 標準モジュールを作成
[4] コード(※)をコピペして貼り付け
[5] 実行ボタンを押す
コード(※)
1 2 3 4 5 6 7 8 9 |
Sub fuyou_gyo_sakujo() Dim i As Long For i = 10000 To 2 Step -1 'カウンターを下→上へ If Range(B ; i).Value <> 仕事 Then Rows(i).Select Selection.Delete Shift:=xlUp End If Next End Sub |
ここで紹介しているマクロは、
セルB100000、セルB9999、セルB9998、…セルB4、セルB3、セルB2と順番にセルの値を判定して、判定したセルの値が”仕事”であれば、その行を削除する
というものです。ただし、マクロを使うと、Ctrl + Z で「もとにもどる」が使えないので、ファイルを別保存してから、作業を行うことをオススメします。
ここでは、B列に”仕事”が含まれるときだけ、削除するコードを紹介しています。しかし、「AかつB」、「AもしくはB」といった条件で処理したい場合もありますよね。
そんなときは、if を上手に使えば、コードを自分流にアレンジ・編集できます。エクセルマクロVBAのifについては、以下の記事でまとめていますので、ぜひ読んでみて下さい。
いくつかやり方を紹介してきましたが、マクロでの自動化がもっともオススメです。理由は、この3つです。
理由1.膨大なデータ(10000行)があっても、処理が数秒で終わる
理由2.細かい条件設定ができる(“仕事”が含まれるものを削除できる。つまり”仕事 術”も削除するようにできる、部分一致も削除可)複数の条件を入れ込める
理由3.一度、設定すれば、次からはボタンを押すだけ
ぜひ、マクロを使えるようになることをおすすめします。
一括削除4|フィルター機能とマクロの自動記録で高速削除
実は、削除法5で紹介したコードで処理する場合、厄介な場合があります。それは、処理する行数が10000行を超えると、数十分程度かかることです。理由は、マクロでselectを使うと、処理に時間がかかってしまうからです。
ですので、もし、処理したい行が10000行を超える場合は、削除法4で紹介した「フィルター」で削除する方法を「マクロの自動記録」で記録すると、高速処理できるようになります。
マクロの自動記録について、詳しく知りたい場合は、こちらので解説していますので、あわせてよんでみてください。
おまけ|スクロールバーが短いなら、不要な行を削除して対処
エクセルのスクロールバーを見ると、短い。データは100行もないのに。おかしい…
と感じたことはありませんか?これは、このまま放置しておくと、ファイルが重くなって、処理が重くなってしまいます。
ですので、スクロールバーが小さいときは、削除法1/削除2でササッと処理してしまいましょう。
削除法1なら、処理したい行を複数選択して、[ctrl] + [-]で削除
削除法2なら、設定したマクロショートカットキーで削除
あなたに合わせた方法で、不要な行を削除してみてください。
「不要な行を非表示にしたい」ときの方法4つ
「不要な行を非表示して、見えないようにしたい!」。そんなときは、今から紹介する方法を試してみてください。
非表示1|ショートカットキーで非表示にする
ショートカットキーを使う方法を紹介します。削除できます。マウスを使うより、ラクに非表示にできます。
手順は以下
[2] 右クリック(ショートカットキーなら[Shift] + [F10] )
[3] 非表示(H)をクリック(ショートカットキーなら h でもOK )
不要な行を選択して、地道にやっていきます。画像の通り、複数行を同時に非表示にすることも可能です。
使いどころ
手動なので、10~50行程度までの対処にとどめましょう。それを超える行数なら、後述の方法を試しましょう。
同様の手順で、[3]で「再表示」を選択すると、非表示の行を再表示できます。
非表示2|マクロのショートカットキーで非表示にする
マクロをショートカットキーに割り当てて対応することも可能です。その場合は、こちらのコードを登録しましょう。
メリットは、単純にショートカットキーだけで対応するより、キーボードを触る回数が減るので、早くなります。
1 2 3 |
Sub gyo_hihyouji() Selection.EntireRow.Hidden = True End Sub |
このマクロは、選択しているセルの行を非表示にするコードです。これにショートカットキーを割り当てることで、キーボードだけで削除できるようにします。
ショートカットキーを割り当てる方法はコチラの記事で紹介していますので、合わせて読んでみてください。
非表示3|フィルターで条件にあった行を非表示にする
こちらは、条件に合致した行だけを非表示にする方法です。数百行以上あるなら、この方法がオススメです。
具体的な手順は以下の通りです。
[2] 非表示にしたい条件だけを表示
[3] 表示された行を非表示にする
[4] フィルターの条件をもとにもどす
では、一つずつ順を追って、説明します。
[1] フィルター機能を付ける
一番上の行に、フィルターを設置します。
[2] 非表示にしたい条件だけを表示
フィルターを利用して、非表示にしたい行だけを表示させます。
[3] 表示された行を非表示にする
表示された行をすべて選択して、非表示にします
[4] フィルターの条件をもとにもどす
フィルターの設定を解除すると、非表示に設定した行は、表示されません。
フィルターを使うと、カンタンに処理できるので、ぜひ試してみてくださいね。
非表示4|マクロで一括非表示
マクロを利用して、一括で自動処理する方法です。
マクロってなに?と思われた方は、こちらの記事で詳しく紹介していますので、あわせてよんでみてください。
では、具体的なやりかたを紹介します。
ここでは、10000行あるデータの中で、B列に仕事が含まれるものを非表示にする方法を紹介します。
[2] 挿入で新しい「標準モジュール」を起動
[3] 標準モジュールを作成
[4] コード(※※)をコピペして貼り付け
[5] 実行ボタンを押す
コード(※※)
1 2 3 4 5 6 7 8 9 |
Sub gyo_hihyouji_sample() Dim i As Long For i = 10000 To 2 Step -1 'カウンターを下→上へ If Range(B ; i).Value <> 仕事 Then Rows(i).Select Selection.EntireRow.Hidden = True End If Next End Sub |
ここでは、B列に”仕事”が含まれるものだけを非表示するコードですが、他の条件を加えたい場合もありますよね。
そんなときは、if を上手に使えば、コードを自分流にアレンジ・編集できます。エクセルマクロVBAのifについては、以下の記事でまとめていますので、ぜひ読んでみて下さい。
不要な行をグレー(灰色)に色付けして暗くしたいときの方法3つ
不要な行を灰色にして、見分けがつくようにしたいときってありますよね?ここでは、カンタンに行の色をグレーに変更する方法を紹介します。
色付け1|ショートカットキーで色付け
エクセルでセルの背景色をグレーに変更しようとすると、意外とメンドウです。そこで、選択しているセルを灰色にするマクロをショートカットキーに割り当てる方法を紹介します。
これを設定しておけば、キーボードを触るだけで、灰色に変更できます。ちなみに、私はエクセル上で[Ctrl] + [R]を押すと、選択しているセルが灰色になるように設定しています。
もし、この方法を使ってみたいなら、こちらのコードを登録しましょう。
1 2 3 4 5 6 |
Sub R灰色() Dim r As Range For Each r In Selection r.Interior.ColorIndex = 15 Next End Sub |
ショートカットキーを割り当てる方法はコチラの記事で紹介していますので、合わせて読んでみてください。
色付け2|マクロで一括でグレーに色付け
マクロを利用して、条件に合致した行をグレーにする方法です。具体的なやりかたを紹介します。
ここでは、2行~10000行のデータの中で
B列に仕事が含まれていれば
その行のA~Fまでを灰色にする
というコードを紹介します。
[2] 挿入で新しい「標準モジュール」を起動
[3] 標準モジュールを作成
[4] コード(※※※)をコピペして貼り付け
[5] 実行ボタンを押す
コード(※※※)
1 2 3 4 5 6 7 8 |
Sub gyo_haiiro_sample() Dim i As Long For i = 2 To 10000 If Range(B ; i).Value = 仕事 Then Range(A ; i ; :F ; i).Interior.ColorIndex = 15 End If Next End Sub |
ここでは、B列に”仕事”が含まれるものだけに対応するコードを紹介しました。しかし、他の条件に書き換えたい場合もありますよね。
そんなときは、ifの部分を変更すれば、コードをアレンジ・編集できます。エクセルマクロVBAのifについては、以下の記事でまとめていますので、ぜひ読んでみて下さい。
色付け3|プルダウンで選択したものをグレーにする
ここで紹介するのは、対応が完了したものをプルダウンで選択して、行を灰色に変更する方法を紹介します。
プルダウンとは、以下のような選択形式のものを指します。選択肢に応じて、色を変える方法は、こちらの記事の「方法14|VBA(イベントプロシージャ―)」でまとめていますので、ぜひあわせて読んでみて下さい。
もし必要であれば、以下の方向性でエクセルを設定してみてください。
プルダウンに設定する項目{完了、遅延、編集中}
・”完了”ならセルの背景色を「グレー」にする
・”遅延”ならセルの背景色を「黄色」にする
・”編集中”ならセルの背景色を「何もない」にする
複数範囲のセルの色を変えたいなら(ここでは、A~Fまでの色を変える例)
1 2 3 4 5 6 7 8 9 10 11 |
Private Sub Worksheet_Change(ByVal Target As Range) Dim i as long i = target.row If Target.Value = 完了 Then Range(A ; i ; :F ; i).Interior.ColorIndex = 15 '背景色「グレー」 ElseIf Target.Value = 遅延 Then Range(A ; i ; :F ; i).Interior.ColorIndex = 6 '背景色「何もなし」 ElseIf Target.Value = 編集中 Then Range(A ; i ; :F ; i).Interior.ColorIndex = xlnone '背景色「黄色」 End If End Sub |
マクロではなく、条件付き書式でも設定可能です。しかし、条件付き書式は、エクセルが重くなるので、オススメしません。
「新しいファイルに必要データだけをうつす」ほうが便利
不要な行を処理するより、新しいファイルに必要なデータを移すほうが何かと便利です。
その理由は、以下の3つです。
・ファイル名と中身が一致しなくなる
・データファイルが重くなり、破損する危険がある
・不要な行を削除すると、データの復元が分からない
ですので、
新しいファイルに必要なデータを移すほうが何かと便利です
データ量が多くても、マクロの自動記録を使えば、そこそこ使えるものが作れます。マクロの自動記録に利用方法が知りたい方は、こちらの記事で紹介していますので、ぜひ合わせてよんでみてくださいね。
注意|不要な行を削除する前に、気を付けること
不要な行を削除する方法、非表示にする方法をいくつかの方法があります。データ数や、削除する条件によって、やりかたを選択できるようになると、速度が上がります。
どんどん試して、仕事のスピードを上げていっていただければ、うれしいです。
しかし、不要な行を削除する前に、気を付けることがあります。
それは、元に戻す方法を覚えておくことです。
・ショートカットキーで[Ctrl + Z](ただし、マクロでは使えない)
何か操作を間違えたときに、いつでも戻れるようにしておきましょう。ゲームでセーブしてから、次のステージにいくのとを同じです。
あなたが達成したい目的に応じて、上手に使い分ける。そうすれば、仕事を早く終わらせることができます。
この記事が、あなたの一助になれば、うれしいです