メインコンテンツへスキップ

リストをフィルタリングし、Excelで残りの非表示または表示の行を削除するにはどうすればよいですか?

フィルタリングされたリストの場合、有用なデータのみを保持するために、非表示または表示の行を削除する必要がある場合があります。 この記事では、Excelでフィルター処理されたリストの残りの非表示または表示行を削除する方法を示します。

VBAコードを使用してアクティブなワークシートの非表示の行を削除します
表示されているすべてのセルを選択して、フィルタリングされたリストの表示されている行を削除します
Kutools for Excelを使用して、フィルターされたリストの非表示または表示された行を簡単に削除します


VBAコードを使用してアクティブなワークシートの非表示の行を削除します

このセクションでは、アクティブシートの非表示行を削除するためのVBAコードを示します。 次のようにしてください。

1.非表示の行を削除するために必要なワークシートをアクティブにし、を押します 他の + F11 キーを同時に開いて アプリケーション向け Microsoft Visual Basic 窓。

2. [Microsoft Visual Basic for Applications]ウィンドウで、[ インセット > モジュール。 次に、以下のVBAコードをコピーしてモジュールウィンドウに貼り付けます。

VBAコード:非表示の行を削除します

Sub RemoveHiddenRows()
	Dim xRow As Range
	Dim xRg As Range
	Dim xRows As Range
	On Error Resume Next
	Set xRows = Intersect(ActiveSheet.Range("A:A").EntireRow, ActiveSheet.UsedRange)
	If xRows Is Nothing Then Exit Sub
		For Each xRow In xRows.Columns(1).Cells
			If xRow.EntireRow.Hidden Then
				If xRg Is Nothing Then
					Set xRg = xRow
				Else
					Set xRg = Union(xRg, xRow)
				End If
			End If
		Next
		If Not xRg Is Nothing Then
			MsgBox xRg.Count & " hidden rows have been deleted", , "Kutools for Excel"
			xRg.EntireRow.Delete
		Else
			MsgBox "No hidden rows found", , "Kutools for Excel"
		End If
	End Sub

3。 プレス F5 コードを実行するためのキー。 アクティブシートに非表示の行がある場合、コードの実行後、削除された非表示の行の数を示すダイアログボックスがポップアップ表示されます。 クリック OK 非表示の行を削除するボタン。 スクリーンショットを参照してください:

doc は残り 1 を削除します

それ以外の場合は、コードの実行後に次のダイアログボックスが表示されます。

doc は残り 1 を削除します

Note:上記のVBAコードは、フィルタリングされたリストの非表示行を削除できるだけでなく、以前に手動で非表示にした非表示行も削除できます。


すべての表示セル機能を選択して、フィルタリングされたリストの表示行を削除します

フィルタされたリストの表示されている行を削除するには、次のようにします。

1.除外されたすべての行を選択し、を押します F5 キーを開く へ行きます ダイアログボックスをクリックし、 スペシャル ボタン。 スクリーンショットを参照してください:

doc は残り 1 を削除します

2。 の中に 特別に行く ダイアログボックスで 目に見える細胞のみ オプションをクリックしてから、 OK

doc は残り 1 を削除します

3.表示されているすべての行が選択されたら、選択範囲を右クリックして、[ 行の削除.

doc は残り 1 を削除します

これまで、表示されているすべての行がフィルターされたリストから削除されていました。


Kutools for Excelを使用して、フィルターされたリストの非表示または表示された行を簡単に削除します

上記のXNUMXつの方法は、多くのExcelユーザーにとって望ましい解決策ではない可能性があります。ここでは、便利なツールを紹介します。 非表示の(表示されている)行と列を削除する の有用性 Kutools for Excel、選択した範囲/シート、アクティブなシート、またはExcelのすべてのワークシートの非表示の行を簡単に削除できます。

申請する前に Kutools for Excelについては 最初にダウンロードしてインストールします.

1.フィルターされたリストの非表示または表示された行のみを削除する場合は、フィルターされた範囲を手動で選択してから、をクリックしてください。 クツール > 削除 > 非表示の(表示されている)行と列を削除する。 スクリーンショットを参照してください:

2。 の中に 非表示の(表示されている)行と列を削除する ダイアログボックス、 選択した範囲内 覗く ドロップダウンリスト(必要に応じて他のオプションを選択できます)で、 内のオプション タイプを削除 セクション、および 詳細タイプ セクション、チェック 目に見える行 or 隠し行 必要に応じてオプション。 そして最後に OK

3.次に、削除された行数を示すダイアログボックスが表示されます。をクリックしてください。 OK

  このユーティリティの無料トライアル(30日)が必要な場合は、 クリックしてダウンロードしてください、次に、上記の手順に従って操作を適用します。


Kutools for Excelを使用して、フィルターされたリストの非表示または表示された行を削除します

最高のオフィス生産性向上ツール

🤖 Kutools AI アシスタント: 以下に基づいてデータ分析に革命をもたらします。 インテリジェントな実行   |  コードを生成  |  カスタム数式の作成  |  データを分析してグラフを生成する  |  Kutools関数を呼び出す...
人気の機能: 重複を検索、強調表示、または識別する   |  空白行を削除する   |  データを失わずに列またはセルを結合する   |   数式なしのラウンド ...
スーパールックアップ: 複数の基準の VLookup    複数の値の VLookup  |   複数のシートにわたる VLookup   |   ファジールックアップ ....
詳細ドロップダウン リスト: ドロップダウンリストを素早く作成する   |  依存関係のドロップダウン リスト   |  複数選択のドロップダウンリスト ....
列マネージャー: 特定の数の列を追加する  |  列の移動  |  Toggle 非表示列の表示ステータス  |  範囲と列の比較 ...
注目の機能: グリッドフォーカス   |  デザインビュー   |   ビッグフォーミュラバー    ワークブックとシートマネージャー   |  リソースライブラリ (自動テキスト)   |  日付ピッカー   |  ワークシートを組み合わせる   |  セルの暗号化/復号化    リストごとにメールを送信する   |  スーパーフィルター   |   特殊フィルター (太字/斜体/取り消し線をフィルター...) ...
上位 15 のツールセット12 テキスト ツール (テキストを追加, 文字を削除する、...)   |   50+ チャート 種類 (ガントチャート、...)   |   40+ 実用的 (誕生日に基づいて年齢を計算する、...)   |   19 挿入 ツール (QRコードを挿入, パスから画像を挿入、...)   |   12 変換 ツール (数字から言葉へ, 通貨の換算、...)   |   7 マージ&スプリット ツール (高度な結合行, 分割セル、...)   |   ... もっと

Kutools for Excel で Excel スキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、生産性を向上させ、時間を節約するための300以上の高度な機能を提供します。  最も必要な機能を入手するにはここをクリックしてください...

説明


Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
Comments (7)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Hi this VBA code is awesome useful.
This comment was minimized by the moderator on the site
Thanks for the info. This has been instructive. Please is there a way to filter and delete for specific numbers in rows of up to 1 million? Can the code above be modified to do so?
This comment was minimized by the moderator on the site
Hi,
Sorry did not test the code in such huge row data. Maybe you can make a copy of your data and test if the code can work.
This comment was minimized by the moderator on the site
VBA code to Delete hidden rows worked perfectly with no fiddling. THANK YOU!!
This comment was minimized by the moderator on the site
Feedback re: the macro for hidden row deletions - this takes too long to run on 900k rows to be useful. 2+ hours on an OC'd Threadripper 1950X and still running (had to end task). Any way to optimize it to use multiple cores or is this a VBA limitation?
This comment was minimized by the moderator on the site
Hi,
The code has been optimized. Please have a try. Thank you for your comment.

Sub RemoveHiddenRows()
Dim xFlag As Boolean
Dim xStr, xTemp As String
Dim xDiv, xMod As Long
Dim I, xCount, xRows As Long
Dim xRg, xCell, xDRg As Range
Dim xArr() As String
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
Set xRg = Intersect(ActiveSheet.Range("A:A").EntireRow, ActiveSheet.UsedRange)
If xRg Is Nothing Then Exit Sub
xRows = xRg.Rows.Count
Set xRg = xRg(1)
xFlag = True
xTemp = ""
xCount = 0
For I = 1 To xRows
Set xCell = xRg.Offset(I - 1, 0)
Do While xFlag
If xCell.EntireRow.Hidden Then
xStr = xCell.Address
xFlag = False
Else
GoTo Ctn
End If
Loop
If xCell.EntireRow.Hidden Then
xTemp = xStr & "," & xCell.Address
End If
If Len(xTemp) > 171 Then
xCount = xCount + 1
ReDim Preserve xArr(1 To xCount)
xArr(xCount) = xStr
xStr = xCell.Address
Else
xStr = xTemp
End If
Ctn:
Next
xCount = xCount + 1
ReDim Preserve xArr(1 To xCount)
xArr(xCount) = xStr
For I = xCount To 1 Step -1
If I = 1 Then
xStr = Mid(xArr(I), InStr(xArr(I), ",") + 1, Len(xArr(I)) - InStr(xArr(I), ","))
Else
xStr = xArr(I)
End If
If xDRg Is Nothing Then
Set xDRg = Range(xStr)
Else
Set xDRg = Union(xDRg, Range(xStr))
End If
If (Len(xDRg.Address) >= 244) Or (xCount = 1) Then
xDRg.EntireRow.Delete
Set xDRg = Nothing
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
This comment was minimized by the moderator on the site
Awesome, thank you! Will review at my next opportunity / need for this and reply back.
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations