パソコンスキルの教科書

パソコンスキルの教科書

東京大学大学院卒。博士課程に進学を志すも、担当教授と折が合わず、無職になる。医者を目指すも結局断念。田舎で派遣社員として働く。「スキルがなければ、仕事ももらえない」と悟り、ビジネススキルを学ぶ。プログラミング、英語を学び、一部上場企業へ転職。年間100時間以上の業務効率化を行い、社内講師に抜擢。海外の案件を担当し、数億円のプロジェクトに携わる。個人の事業でも、月売上100万を達成。現在は、自分の価値を高めるためのスキル向上支援を行う

エクセル不要な行の処理方法13コ|マクロで一括削除、非表示、暗く(グレー)にする方法を徹底紹介

f:id:gene320:20170101020715j:plain

「必要な部分だけを表示したいのに、望んでいる結果が得られない」 「マウスで一つずつ行を削除していて、大変…」 「条件に一致するデータを抽出したい」

という悩みはありませんか?

ここでは、企業でパソコン講師を務めた私が、必要な行だけを残して、不要な行を処理する方法を紹介します。手動でサッとやる方法から自動で一気に処理する方法まで、使いどころも含めて、紹介していきます。

ぜひ読んで実践してみてください。

なお、エクセルマクロを使って自動化する方法も紹介します。エクセルマクロを使えば、ボタン一つで不要な行を削除できます。ただ、マクロとかVBAと聞くと、「よくわからない…」という方も多いはず。

このブログの中で、エクセルマクロVBAについても記事を書きましたので、あわせてお読みいただくと、より理解が深まるでしょう。

www.fastclassinfo.com

不要な行を消したい|データが少ないなら、この2つ

ショートカットキーを使う方法を2つ紹介します。マウスを使うより、断然ラクに不要な行を削除できるようになります。

使いどころ ここで紹介するのは、手動で効率よく削除していく方法です。ですので、削除したいデータの行数が10~50行程度です。それを超える行数の場合は、後述していますので、そちらをご覧ください。

削除法1|行をショートカットキーで消す

マウスを使うより、ショートカットキーを使うとラクに行を削除できます。まずは、ショートカットキーで行を削除する方法から紹介します。

手順は以下

[1] 不要な行まで移動:←↑→↓(矢印キー)
[2] 不要な行の全体を選択:Shift + Space (半角モードにしておく)
[3] 選択した行を削除:Ctrl + -

動画での解説(無音なので、音を気にせず再生できます)


不要な行を選択して一行ずつ、地道にやっていきます。

使いどころ 対象となるデータの行数が10~20までは、この方法は効果を発揮します。しかし、行数が増えると面倒になってきます。

単純作業で、ミスも増えてしまうので、対象が20行を越えるなら、他の方法を試しましょう。

削除法2|マクロで一行ずつ削除する|

カンタンに作れるマクロを設定して、不要な行を1つずつ手動で選択しつつ、不要な行を削除するやり方です。

マクロの設定は、以下のコードを使います。

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行分削除します。

このマクロにショートカットキーを割り当てることで、キーボードだけで削除できるようになります。

ショートカットキーを割り当てる方法はコチラの記事で紹介していますので、合わせて読んでみてください。

www.fastclassinfo.com

注意:マクロを使用すると、Ctrl + Z (もとに戻る)が適応されません。

紹介しているのは、あくまで目視で確認しながら、削除する方法です。行数が多い場合は、おすすめしません。

不要な行を「まとめて」一括削除したいときの方法4つ

不要な行を一気に削除したい場合は、ここで紹介する方法を試してみてください。

ただ、あなたが削除したい条件に応じて、「いいやり方」と「わるいやり方」があります。ぜひこのまま読みすすめていって、あなたに適した方法をチョイスしてみてください。

一括削除1|重複した行だけを削除したい|「重複の削除」を使う

「重複の削除」という機能を使って、削除する方法です。

「重複を削除したい」には、これがオススメです。

たとえば、行ごとに列Bと列Cに含まれる値を比較して、一致している行があれば、削除することが可能です。

手順は以下

[1] セル範囲を選択
[2] 重複の削除を選択
[3] 列Bと列CのチェックボックスをONにする(ここでは、列B:カテゴリー、列C:キーワード)
[4] OKを押す

動画での解説(無音なので、音を気にせず再生できます)


使いどころ
この方法は、チェックをいれた箇所が完全に一致しないと削除されません。たとえば、「ABC」と「ABCD」は一致しないので、削除対象になりません。

このように部分一致も削除したい場合は、あまり使えません。

一括削除2|条件にあった行を削除したい|フィルターを使う

フィルターとは、条件に合致したものだけを表示する方法です。

フィルターを利用して、不要な行を削除する方法を紹介します。

大まかな流れは、
フィルターで削除したい行だけを表示
→行の削除
→フィルター機能を解除する。

すると、削除したい行が除去されたデータに作り替えることができる。というカンジです。

具体的な手順は以下の通りです。

[1] フィルター機能を付ける
[2] 削除したい条件だけを表示
[3] 表示された行を削除
[4] フィルターの条件をもとにもどす

動画での解説(無音なので、音を気にせず再生できます)


使いどころ
データの中で、特定の条件だけを削除したい場合にかなり効果を発揮します。

しかし、フィルターでの抽出は、単語だけに適応されるので、色のついた部分だけを削除したい場合、セルの中の一部の単語が含まれる場合だけを削除したい場合は、使えません。

そういった場合は、次の方法をオススメします

一括削除3|条件を細かく振って削除|マクロVBAで一括削除

マクロで自動化する方法です。

マクロってなに?と思われた方は、こちらの記事で詳しく紹介していますので、あわせてよんでみてください。

では、具体的なやりかたを紹介します。

[1] VBEを起動:Alt + F11
[2] 挿入で新しい「標準モジュール」を起動
[3] 標準モジュールを作成 [4] コード(※)をコピペして貼り付け [5] 実行ボタンを押す

コード(※)

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については、以下の記事でまとめていますので、ぜひ読んでみて下さい。

www.fastclassinfo.com

いくつかやり方を紹介してきましたが、マクロでの自動化がもっともオススメです。理由は、この3つです。
理由1.膨大なデータ(10000行)があっても、処理が数秒で終わる
理由2.細かい条件設定ができる(“仕事"が含まれるものを削除できる。つまり"仕事 術"も削除するようにできる、部分一致も削除可)複数の条件を入れ込める
理由3.一度、設定すれば、次からはボタンを押すだけ

ぜひ、マクロを使えるようになることをおすすめします。

一括削除4|フィルター機能とマクロの自動記録で高速削除

実は、削除法5で紹介したコードで処理する場合、厄介な場合があります。それは、処理する行数が10000行を超えると、数十分程度かかることです。理由は、マクロでselectを使うと、処理に時間がかかってしまうからです。

ですので、もし、処理したい行が10000行を超える場合は、削除法4で紹介した「フィルター」で削除する方法を「マクロの自動記録」で記録すると、高速処理できるようになります。

マクロの自動記録について、詳しく知りたい場合は、こちらので解説していますので、あわせてよんでみてください。

www.fastclassinfo.com

おまけ|スクロールバーが短いなら、不要な行を削除して対処

エクセルのスクロールバーを見ると、短い。データは100行もないのに。おかしい…

f:id:gene320:20170518220017p:plain

と感じたことはありませんか?これは、このまま放置しておくと、ファイルが重くなって、処理が重くなってしまいます。

ですので、スクロールバーが小さいときは、削除法1/削除2でササッと処理してしまいましょう。

削除法1なら、処理したい行を複数選択して、[ctrl] + [-]で削除
削除法2なら、設定したマクロショートカットキーで削除

あなたに合わせた方法で、不要な行を削除してみてください。

「不要な行を非表示にしたい」ときの方法4つ

「不要な行を非表示して、見えないようにしたい!」。そんなときは、今から紹介する方法を試してみてください。

非表示1|ショートカットキーで非表示にする

ショートカットキーを使う方法を紹介します。削除できます。マウスを使うより、ラクに非表示にできます。

手順は以下

[1] 非表示にしたい行を選択:[Shift] + [Space] (半角モードにしておく)
[2] 右クリック(ショートカットキーなら[Shift] + [F10] )
[3] 非表示(H)をクリック(ショートカットキーなら h でもOK )

f:id:gene320:20170520183632p:plain

不要な行を選択して、地道にやっていきます。画像の通り、複数行を同時に非表示にすることも可能です。

使いどころ
手動なので、10~50行程度までの対処にとどめましょう。それを超える行数なら、後述の方法を試しましょう。

同様の手順で、[3]で「再表示」を選択すると、非表示の行を再表示できます。

非表示2|マクロのショートカットキーで非表示にする

マクロをショートカットキーに割り当てて対応することも可能です。その場合は、こちらのコードを登録しましょう。

メリットは、単純にショートカットキーだけで対応するより、キーボードを触る回数が減るので、早くなります。

Sub gyo_hihyouji()
    Selection.EntireRow.Hidden = True
End Sub

このマクロは、選択しているセルの行を非表示にするコードです。これにショートカットキーを割り当てることで、キーボードだけで削除できるようにします。

ショートカットキーを割り当てる方法はコチラの記事で紹介していますので、合わせて読んでみてください。

www.fastclassinfo.com

非表示3|フィルターで条件にあった行を非表示にする

こちらは、条件に合致した行だけを非表示にする方法です。数百行以上あるなら、この方法がオススメです。

具体的な手順は以下の通りです。

[1] フィルター機能を付ける
[2] 非表示にしたい条件だけを表示
[3] 表示された行を非表示にする
[4] フィルターの条件をもとにもどす

では、一つずつ順を追って、説明します。

[1] フィルター機能を付ける
一番上の行に、フィルターを設置します。

f:id:gene320:20170520183645p:plain

[2] 非表示にしたい条件だけを表示
フィルターを利用して、非表示にしたい行だけを表示させます。

f:id:gene320:20170520183651p:plain

[3] 表示された行を非表示にする
表示された行をすべて選択して、非表示にします

f:id:gene320:20170520183658p:plain

[4] フィルターの条件をもとにもどす
フィルターの設定を解除すると、非表示に設定した行は、表示されません。

f:id:gene320:20170520183703p:plain

フィルターを使うと、カンタンに処理できるので、ぜひ試してみてくださいね。

非表示4|マクロで一括非表示

マクロを利用して、一括で自動処理する方法です。

マクロってなに?と思われた方は、こちらの記事で詳しく紹介していますので、あわせてよんでみてください。

www.fastclassinfo.com

では、具体的なやりかたを紹介します。

ここでは、10000行あるデータの中で、B列に仕事が含まれるものを非表示にする方法を紹介します。

[1] VBEを起動:Alt + F11
[2] 挿入で新しい「標準モジュール」を起動
[3] 標準モジュールを作成
[4] コード(※※)をコピペして貼り付け
[5] 実行ボタンを押す

コード(※※)

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については、以下の記事でまとめていますので、ぜひ読んでみて下さい。

www.fastclassinfo.com

不要な行をグレー(灰色)に色付けして暗くしたいときの方法3つ

不要な行を灰色にして、見分けがつくようにしたいときってありますよね?ここでは、カンタンに行の色をグレーに変更する方法を紹介します。

色付け1|ショートカットキーで色付け

エクセルでセルの背景色をグレーに変更しようとすると、意外とメンドウです。そこで、選択しているセルを灰色にするマクロをショートカットキーに割り当てる方法を紹介します。

これを設定しておけば、キーボードを触るだけで、灰色に変更できます。ちなみに、私はエクセル上で[Ctrl] + [R]を押すと、選択しているセルが灰色になるように設定しています。

もし、この方法を使ってみたいなら、こちらのコードを登録しましょう。

Sub R灰色()
    Dim r As Range
    For Each r In Selection
        r.Interior.ColorIndex = 15
    Next
End Sub

ショートカットキーを割り当てる方法はコチラの記事で紹介していますので、合わせて読んでみてください。

www.fastclassinfo.com

色付け2|マクロで一括でグレーに色付け

マクロを利用して、条件に合致した行をグレーにする方法です。具体的なやりかたを紹介します。

ここでは、2行~10000行のデータの中で
B列に仕事が含まれていれば
その行のA~Fまでを灰色にする
というコードを紹介します。

[1] VBEを起動:Alt + F11
[2] 挿入で新しい「標準モジュール」を起動
[3] 標準モジュールを作成 [4] コード(※※※)をコピペして貼り付け [5] 実行ボタンを押す

コード(※※※)

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については、以下の記事でまとめていますので、ぜひ読んでみて下さい。

www.fastclassinfo.com

色付け3|プルダウンで選択したものをグレーにする

ここで紹介するのは、対応が完了したものをプルダウンで選択して、行を灰色に変更する方法を紹介します。

プルダウンとは、以下のような選択形式のものを指します。選択肢に応じて、色を変える方法は、こちらの記事の「方法14|VBA(イベントプロシージャ―)」でまとめていますので、ぜひあわせて読んでみて下さい。

www.fastclassinfo.com

もし必要であれば、以下の方向性でエクセルを設定してみてください。

プルダウンに設定する項目{完了、遅延、編集中}
・"完了"ならセルの背景色を「グレー」にする
・"遅延"ならセルの背景色を「黄色」にする
・"編集中"ならセルの背景色を「何もない」にする

複数範囲のセルの色を変えたいなら(ここでは、A~Fまでの色を変える例)

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](ただし、マクロでは使えない)

何か操作を間違えたときに、いつでも戻れるようにしておきましょう。ゲームでセーブしてから、次のステージにいくのとを同じです。

あなたが達成したい目的に応じて、上手に使い分ける。そうすれば、仕事を早く終わらせることができます。

この記事が、あなたの一助になれば、うれしいです