「表の中の特定のデータのみを残したい」
そのような場面、ありますよね。
特に、特定のデータのみを他の方に共有するときなどです。
ただ、標準機能には、「特定のデータ以外を一括で削除する」という機能はありません。
そのため、「特定のデータ以外で絞って、残ったデータ行を削除してから絞り込みを解除する」といった手順を行う必要があります。
例えば、以下の表から「地域が東京のデータのみ」を残したい場合、以下の手順になります。

① 東京以外で絞り込み

② 表示されたデータ行を削除

③ 絞り込みを解除(フィルターの解除)

ただ、「削除したいデータで絞り込みする」というのが直観的じゃないです。
そこで今回は、「残したいデータ」で絞り込んでから非表示のデータ行を一括削除できるように、非表示の行を一括削除する機能の開発方法について解説していきます。

※こちらで開発したファイルは、記事の最後にて配布しています。
1. 開発準備
まず初めに、[開発]タブを選択し、[マクロ]を選択します。

表示された以下の画面にて、開発する機能の名前を入力し、[作成]を選択します。
こちらでは、「DeleteHiddenRows」と入力しています。

次に表示される以下の画面の「Sub ○○」から「End Sub」の間にコードを記述します。

2. コードの記述
以下のコードを記述します。
Sub DeleteHiddenRows()
Dim r As Long
For r = 100000 To 3 Step -1
If Rows(r).Hidden Then
Rows(r).Delete
End If
Next r
End Sub
では、コードについて解説していきます。
Dim r As Long
For r = 100000 To 3 Step -1
'省略
Next r
100000から3までを-1ずつ変数「r」に渡して、ForからNextの間を繰り返しています。
100000から3というのは、表の最終行(仮)から先頭行までを表しており、最終行の100000は、「100000行目まではデータがない」という前提の仮の値になります。
If Rows(r).Hidden Then
Rows(r).Delete
End If
繰り返し処理で受け取る変数「r」の値を活用して、「r」行目が非表示の場合に「r」行目を行ごと削除しています。
3. ショートカットの割り当て
開発した機能が簡単に実行できるように、ショートカットを割り当てていきます。
まず、[開発]タブを選択し、[マクロ]を選択します。

マクロの画面から先ほどの開発したマクロ名を選択し、[オプション]を選択します。

表示された以下の画面にて、[ショートカットキー]のテキストボックスを選択し、好みのキーを入力します。
※「Ctrl+Shift+○」のようにShiftを加えたい場合は、「Shift+好みのキー」を入力します。

こちらでは、「Ctrl+Shift+D」に割り当てました。
ショートカットキーの入力後は、確定して画面を閉じます。
4. 完成
以上の手順で完成です。
抽出したいデータのみに絞り込みし、割り当てたショートカットキーを入力することで、非表示の行がすべて削除されます。

必要に応じて、フィルター機能を解除していただいて問題ございません。
また、今回の機能は、フィルター機能による絞り込みでなくても、非表示の行があれば、削除対象となります。
▼サンプルファイル▼
























































































































