作者:绿色风
分类:
时间:2022-08-17
浏览:265
楼主 水星钓鱼 |
Q:需要将有一列中含有0值和空单元格的行隐藏,如何实现? A:按ALT+F11键,然后在代码窗口输入如下代码,按F5运行即可。
- Sub 隐藏D列中0值和空单元格所在的行()
- Dim rngU As Range, c As Range, firstAddress As String
- On Error Resume Next '未找到空值时忽略
- With Range("D:D")
- .EntireRow.Hidden = False '令所有行可见
- Set c = .Find(0, LookIn:=xlValues, LookAt:=xlWhole) '查找第一个0值单元格
- If Not c Is Nothing Then
- firstAddress = c.Address '记住第一个0值单元格地址
- Set rngU = c '存储第一个单元格到rngU对象,用于循环中合并区域,避免rngU返回nothing导致Uion方法出错
- Do '进入循环
- Set rngU = Application.Union(rngU, c) '合并区域
- Set c = .FindNext(c) '查找下一个0值单元格
- Loop While c.Address <> firstAddress '找回第一个0值时结束循环
- rngU.EntireRow.Hidden = True '隐藏0值所在行
- End If
- .SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True '定位空值,并隐藏所在行
- End With
- End Sub
|
2楼 洋五月 |
v盲,来学习了 |
3楼 xxiaoa |
学习一下,谢谢! |
4楼 kevinchengcw |
学习一下 |
5楼 yaoxuhuijsz |
学习 |
6楼 763352711 |
好像只对第一个错误行有用。 也许是我用错了。 Sub 隐藏错误值单元格所在的行() Dim rngU As Range, c As Range, firstAddress As String On Error Resume Next '未找到#DIV/0!值时忽略 With Range("M4:M1150") .EntireRow.Hidden = False '令所有行可见 Set c = .Find("#div/0!", LookIn:=xlValues, LookAt:=xlWhole) '查找第一个#DIV/0!单元格 If Not c Is Nothing Then firstAddress = c.Address '记住第一个DIV/0!值单元格地址 Set rngU = c '存储第一个单元格到rngU对象,用于循环中合并区域,避免rngU返回nothing导致Uion方法出错 Do '进入循环 Set c = .FindNext(c) '查找下一个#DIV/0!值单元格 Loop While c.Address <> firstAddress '找回第一个#DIV/0!值时结束循环 rngU.EntireRow.Hidden = True '隐藏#DIV/0!值所在行 End If .SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True '定位#DIV/0!值,并隐藏所在行 End With End Sub |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一