Note: The other languages of the website are Google-translated. Back to English

リストをフィルタリングし、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 を削除します

注意:上記の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-day) このユーティリティの クリックしてダウンロードしてください、次に、上記の手順に従って操作を適用します。


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


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

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。
kteタブ201905

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

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (7)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
フィードバックre:非表示の行を削除するためのマクロ-これは、900k行で実行するには時間がかかりすぎて役に立ちません。 OCされたThreadripper2Xで1950時間以上、まだ実行中です(タスクを終了する必要がありました)。 複数のコアを使用するように最適化する方法はありますか、それともこれはVBAの制限ですか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
コードが最適化されました。 ぜひお試しください。 コメントありがとうございます。

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
エラーで次の再開
Application.ScreenUpdating = False
Application.EnableEvents = False
xRg = Intersect(ActiveSheet.Range( "A:A")。EntireRow、ActiveSheet.UsedRange)を設定します
xRgが何もない場合は、Subを終了します
xRows = xRg.Rows.Count
xRg = xRg(1)に設定します
xFlag = 真
xTemp = ""
xCount = 0
I=1の場合xRowsへ
xCell = xRg.Offset(I-1、0)を設定します
xFlag中に行う
xCell.EntireRow.HiddenThenの場合
xStr = xCell.Address
xFlag = False

GoTo Ctn
終了する場合
ループ
xCell.EntireRow.HiddenThenの場合
xTemp = xStr& "、"&xCell.Address
終了する場合
Len(xTemp)>171の場合
xCount = xCount + 1
ReDim Preserve xArr(1 To xCount)
xArr(xCount)= xStr
xStr = xCell.Address

xStr = xTemp
終了する場合
Ctn:
次へ
xCount = xCount + 1
ReDim Preserve xArr(1 To xCount)
xArr(xCount)= xStr
I = xCount To 1Step-1の場合
I=1の場合
xStr = Mid(xArr(I)、InStr(xArr(I)、 "、")+ 1、Len(xArr(I))-InStr(xArr(I)、 "、"))

xStr = xArr(I)
終了する場合
xDRgが何もない場合
xDRg = Range(xStr)を設定します

xDRg = Union(xDRg、Range(xStr))を設定します
終了する場合
If(Len(xDRg.Address)> = 244)Or(xCount = 1)Then
xDRg.EntireRow.Delete
xDRg=なしに設定
終了する場合
次へ
application.enablevents = true
Application.ScreenUpdating = True
End Subの
このコメントは、サイトのモデレーターによって最小化されました
素晴らしいありがとう! 私の次の機会/これの必要性を確認し、返信します。
このコメントは、サイトのモデレーターによって最小化されました
非表示の行を削除するVBAコードは、いじることなく完全に機能しました。 ありがとうございました!!
このコメントは、サイトのモデレーターによって最小化されました
情報をありがとう。 これは有益でした。 最大1万行の特定の番号をフィルタリングして削除する方法はありますか? 上記のコードを変更してそうすることはできますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
申し訳ありませんが、そのような巨大な行データのコードをテストしませんでした。 たぶん、データのコピーを作成して、コードが機能するかどうかをテストできます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、このVBAコードは非常に便利です。
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護