EXCEL表格中用宏命令隐藏有条件的空行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL表格中用宏命令隐藏有条件的空行?相关的知识,希望对你有一定的参考价值。

在一个合计表格中,有的数量合计为0需要隐藏,但是表格中也有大标题之类的数量合计一栏也为0,但仍需要显示。(如图所示,第一红行无需隐藏,第二红行需要隐藏)求一个相关的隐藏有条件空行的宏命令!万分感谢!!!

如下图所示的出差报销登记表,我们要批量删除表格中的空行。第一种方法:筛选法:选中表格要进行筛选的区域,点击【数据】/【筛选】,就可以看到,第一行已经被添加上了筛选按钮(如下图所示的箭头形状的筛选标记)。

........................
2
........................
点击任何一列中的筛选按钮,例如我们点击B列的筛选按钮,将【全选】选项勾选去掉,拉动右侧滑块将【空白】选项勾选上。所有的空白行就筛选出来了。然后选中空白行,一次性删除。然后再次点击第一行B列的筛选按钮,选择【全选】,点击【确定】即可。此方法比较简单。

........................
3
........................
第二种方法:定位法:选中所有含有数据的区域,点击【开始】/【查找和选择】/【定位条件】,调出【定位条件】的选择框,也可以直接按F5,调出【定位】的选择框,然后点击【定位条件】,调出【定位条件】的选择框。

........................
4
........................
在【定位条件】选择框,选择【空值】,点击【确定】。可以看到,所有的空值已经被选中。然后右键单击【删除】,就调出了【删除】的选择框,选择【整行】,点击【确定】。

........................
5
........................
可以看到,整行空行已经被删除了。点击任何一个单元格将选择(蓝色填充)去掉即可。此方法重要的是在【删除】选择框中要选择【整行】。

........................
6
........................
第三种方法:vba代码方法:点击【开发工具】选项卡下的【visual basic】,点击【视图】/【代码窗口】调出vba代码的编辑窗口。选项卡中没有【开发工具】选项卡的可以参看以前经验调出来。

........................
7
........................
将下列代码添加到代码编辑区。Sub 删除空行()For Each rng In Range("a1:a19")ro = rng.RowIf rng = "" ThenRange("a" & ro & ":d" & ro).SelectSelection.DeleteEnd IfNextEnd Sub

........................
8
........................
点击下图所示的代码运行按钮,可以看到excel表格中的空行已经被删除了。需要注意的是:在点击代码运行按钮时,所要删除空行的工作表一定要在打开的状态,也就是激活状态。其实,用vba解决excel中的其他复杂问题还是很方便的。怎么样,你学会了吗?赶快动手试一下吧。追问

但是你的这种方法只满足了一种条件,最后一列为空行并不是都要删掉的,请问怎么能进行筛选呢?

参考技术A 示例代码如下(代码假设数量合计是C列,请自行修改程序里面的3),调试中遇到问题请拷屏追问:
sub 宏1()
dim arr,i
arr=activesheet.usedrange
for i=1 to ubound(arr)
if arr(i,1)<>"" and arr(i,2)<>"" and arr(i,3)="" then rows(i).hidden=true
next i
end sub追问

表格的最终合计为R列,我把3改成18后调试时显示如图,我的13列是这个,可以再帮忙看一下吗

追答

此时点【调试】按钮,会出现一个黄色条,可以看见错误的位置,然后鼠标放在变量i上会显示i的值,就能知道是哪行数据导致的错误,鼠标放在arr上会显示数组对应位置的内容,有了上面三个信息(错误行、变量值),自然就能知道具体原因了。

如果瞎猜,请检查两点,一是工作表的A1是否有内容,如果为空请在这个单元格输入一个空格;二是判断的行列值例如arr(i,13)""在这个单元格的值为#VALUE!等错误的时候也会报错。

本回答被提问者采纳
参考技术B 你要把图片的行列号截图出来,根据什么列来判断就可以写代码了追问

追答

看不清楚

假设 是 MN列,都有空或0的就隐藏
Sub 隐藏()
Dim i
For i = 2 To Range("c65536").End(xlUp).Row
If Cells(i, "M") = "" And Cells(i, "N") = "" Then
Rows(i).Select
Selection.EntireRow.Hidden = True
End If
Next
End Sub

excel根据条件自动显示隐藏行 (不用宏和VAB代码实现)

看截图,当A1>40,黄色区域的整个行隐藏,否则显示,回答者不要用宏或VAB代码,也不要用把内容隐藏,而行还在。
同志们是自动显示隐藏,不要手动

先看下例子表格是什么样的,有利于更加方便的介绍怎么隐藏行。
隐藏行方法一:选中要隐藏的行,一行也可以,多行也行,一次隐藏多行也是可以的,现在说隐藏2,3行,先选中2,3行,然后右键,点击隐藏即可。
隐藏行方法二:还是按照方法一中的步骤,选中要隐藏的行,然后点击右上角的格式,再将鼠标放到隐藏和取消隐藏上,点击隐藏行,即可。
参考技术A 条件格式应该能满足你的要求 步骤如下, 1。鼠标选中21行以下的需要隐藏的所有行 2。格式-条件格式-使用公式确定要设置格式的单元格-新建规则-输入 =$b$9="内部调整" 3.设置格式-数字-自定义-输入 ;;; 确定 这样就做到了,B9=内部调整”不显示21行一下的行,但是内容还在, 参考技术B 按你说的要求,此题无解!
唯有用VBA代码才能实现你说的!

以上是关于EXCEL表格中用宏命令隐藏有条件的空行?的主要内容,如果未能解决你的问题,请参考以下文章

Excel 怎样把多余的行列去掉?

excel根据条件自动显示隐藏行 (不用宏和VAB代码实现)

求Excel大神帮助,在指定时间之后隐藏表格的内容

如何在excel里批量删除空白行列?

layui表格的表头怎么隐藏,内容可以隐藏,但是表头却还在

EXCEL中,根据条件筛选出的数据显示出来,那剩下那些不符合条件的数据是被隐藏还是被删除了?