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 键打开 转到 对话框,然后单击 Special 按钮。 看截图:

doc删除休息1

2。 在里面 去特别 对话框,检查 仅可见细胞 选项,然后单击 OK 按钮。

doc删除休息1

3.现在,所有可见行均被选中,右键单击所选内容,然后单击“确定”。 删除行.

doc删除休息1

到目前为止,所有可见行均已从过滤列表中删除。


使用Kutools for Excel轻松删除过滤列表的隐藏或可见行

对于许多Excel用户来说,以上两种方法可能不是理想的解决方案,在这里我们为您介绍一个方便的工具。 随着 删除隐藏(可见)行和列 实用程序 Kutools for Excel,您可以轻松删除Excel中所选范围/工作表,活动工作表或所有工作表中的隐藏行。

申请前 Kutools for Excel首先下载并安装.

1.如果您只想删除过滤列表的隐藏或可见行,请手动选择过滤范围,然后单击 库工具 > 删除 > 删除隐藏(可见)行和列。 看截图:

2。 在里面 删除隐藏(可见)的行和列 对话框中,保留 在选定范围内 选中 在看 下拉列表(您可以根据需要选择其他选项),然后选中 在选项 删除类型 部分,并在 详细类型 部分,检查 可见行 or 隐藏的行 您需要的选项。 最后点击 OK 按钮。

3.然后会弹出一个对话框,告诉您已删除了多少行,请单击 OK 按钮。

  如果您想免费试用该工具(30天), 请点击下载,然后按照上述步骤进行操作。


使用Kutools for Excel删除过滤列表的隐藏或可见行


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能。 支持Office / Excel 2007-2019和365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能30天免费试用。 60天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (7)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
反馈重新:隐藏行删除的宏 - 这需要太长时间才能在 900k 行上运行以发挥作用。 在 OC'd Threadripper 2X 上运行了 1950 多个小时并且仍在运行(必须结束任务)。 有什么方法可以优化它以使用多个内核,或者这是 VBA 限制?
该评论由网站上的主持人最小化
嗨,
代码已经优化。 请试一试。 感谢您的评论。

子 RemoveHiddenRows()
将 xFlag 调暗为布尔值
将 xStr、xTemp 调暗为字符串
将 xDiv、xMod 调暗
昏暗我,xCount,xRows 一样长
将 xRg、xCell、xDRg 调暗为范围
将 xArr() 调暗为字符串
出错时继续下一步
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 = ""
x计数 = 0
对于 I = 1 到 xRows
设置 xCell = xRg.Offset(I - 1, 0)
边做边做 xFlag
如果 xCell.EntireRow.Hidden 然后
xStr = xCell.地址
xFlag = 假
其他
转到 Ctn
结束如果
循环
如果 xCell.EntireRow.Hidden 然后
xTemp = xStr & "," & xCell.Address
结束如果
如果 Len(xTemp) > 171 那么
xCount = xCount + 1
ReDim 保留 xArr(1 到 xCount)
xArr(xCount) = xStr
xStr = xCell.地址
其他
xStr = xTemp
结束如果
货号:
下一页
xCount = xCount + 1
ReDim 保留 xArr(1 到 xCount)
xArr(xCount) = xStr
对于 I = xCount 到 1 步 -1
如果我 = 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))
结束如果
如果 (Len(xDRg.Address) >= 244) 或 (xCount = 1) 那么
xDRg.EntireRow.Delete
设置 xDRg = 无
结束如果
下一页
Application.EnableEvents = True
Application.ScreenUpdating =真
END SUB
该评论由网站上的主持人最小化
太棒了,谢谢你! 将在我下次有机会/需要时进行审查并回复。
该评论由网站上的主持人最小化
删除隐藏行的 VBA 代码完美地工作,没有任何摆弄。 谢谢你!!
该评论由网站上的主持人最小化
谢谢(你的)信息。 这很有启发性。 请问有没有办法过滤和删除最多1万行中的特定数字? 可以修改上面的代码吗?
该评论由网站上的主持人最小化
嗨,
抱歉没有在如此庞大的行数据中测试代码。 也许您可以复制您的数据并测试代码是否可以工作。
该评论由网站上的主持人最小化
嗨,这个 VBA 代码非常有用。
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点