Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5339|回复: 25

[已解决]请大虾帮我看看end(xlup)如何转换成end(xldown)

[复制链接]
发表于 2017-11-10 19:12 | 显示全部楼层 |阅读模式
如下代码:

Sub 隐藏行()

Dim n&

For n = 4 ToRange("B199").End(xlUp).Row

If Cells(n, 2) = "" Then

Rows(n).EntireRow.Hidden = True

End If

Next n

End Sub
我想把代码中的“End(xlUp)”换成"End(xlDown)"请大神帮我改下代码
最佳答案
2017-11-11 14:41
uqfyplj 发表于 2017-11-11 14:33
我的代码如下:
Sub 隐藏行()Dim n&For n = 4 ToRange("B199").End(xlUp).Row[ ...

Sub 隐藏行()
Dim n&
For n = Range("B65536").End(xlUp).Row To 4 Step -1
If Cells(n, 2) = "" Then
Rows(n).EntireRow.Hidden = True
End If
Next n
End Sub
这是最正确的,你也不用管它199了。如果非要从199以上才对B列的空值行进行隐藏,就For n = 199 To 4 Step -1别说down了,试试运行。


发表于 2017-11-10 19:23 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-11-10 19:32 | 显示全部楼层
苏子龙 发表于 2017-11-10 19:23
range("b4").end(xldown).row

怪我没说清楚,我的代码的意思是从单元格B4到单元格B199的范围内,有空值的话改行就自动隐藏,而查找的方向是向上的,我想改成向下查找。
回复

使用道具 举报

发表于 2017-11-10 19:43 | 显示全部楼层
本帖最后由 高 于 2017-11-10 19:49 编辑

For n = 199 to 4 step -1
如果数据从199行开始,如果要向上查找空单元格隐藏,要那个up 或者down一点用都没有。

如果不确定从199行开始,可以For n = range("b65536").end(xlup).row to 4 step -1,也用不上down


你原来的就是向下找的空单元格,我说的才是向上的。
回复

使用道具 举报

 楼主| 发表于 2017-11-10 19:55 | 显示全部楼层
高 发表于 2017-11-10 19:43
For n = 199 to 4 step -1
如果数据从199行开始,如果要向上查找空单元格隐藏,要那个up 或者down一点用都 ...

我的数据是在1到199行内的,举例:第2行和第10行有数据时,1到10行之间没有数据的行会隐藏,但10行一下的就不会隐藏了,所以想把UP换成Down,可是直接把UP换成Down的话表格会卡死!
回复

使用道具 举报

发表于 2017-11-10 21:23 | 显示全部楼层
uqfyplj 发表于 2017-11-10 19:55
我的数据是在1到199行内的,举例:第2行和第10行有数据时,1到10行之间没有数据的行会隐藏,但10行一下的 ...

直接换成我那部分代码就不会卡死了。一点问题都不会有。
回复

使用道具 举报

发表于 2017-11-11 08:38 | 显示全部楼层
uqfyplj 发表于 2017-11-10 19:32
怪我没说清楚,我的代码的意思是从单元格B4到单元格B199的范围内,有空值的话改行就自动隐藏,而查找的方 ...

Sub 隐藏行()
Dim n&
For n = Range("B65536").End(xlUp).Row to 1 step -1
   If Cells(n, 2) = "" Then
      Rows(n).EntireRow.Hidden = True'这样一个一个隐藏,当数据多时,是会卡的
   End If
Next n
End Sub

Sub tt()
Dim n&, rgs As Range
Application.ScreenUpdating = False
For n = Range("b65536").End(xlUp).Row To 4 Step -1
    If Cells(n, 2) = "" Then
        If rgs Is Nothing Then
            Set rgs = Cells(n, 1)
        Else
            Set rgs = Union(rgs, Cells(n, 2))
        End If
    End If
Next
If Not rgs Is Nothing Then rgs.EntireRow.Hidden = True
Application.ScreenUpdating = True
End Sub


回复

使用道具 举报

 楼主| 发表于 2017-11-11 13:56 | 显示全部楼层
苏子龙 发表于 2017-11-11 08:38
Sub 隐藏行()Dim n&For n = Range("B65536").End(xlUp).Row to 1 step -1   If Cells(n, 2) = "" Then    ...

大虾你这个代码跟我的代码效果是一样的,都是向上查找,而我想要向下查找的。我想我代码中:
For n = 4 ToRange("B199").End(xlUp).Row
换成
For n = 4 ToRange("B199").End(xlDown).Row
但是换成这个代码后它会把工作表中65565行中所有空白的行都隐藏了,会卡死,我想要的在一定范围能执行就可以了比如:从第4行到第99行就可了,能帮我解决吗?

回复

使用道具 举报

发表于 2017-11-11 14:10 | 显示全部楼层
第4行到第99行不是在B199的上面嗎??
那你寫 Range("B199").End(xlDown).Row 是怎麼找也找不到4~99行的吧!!!
回复

使用道具 举报

发表于 2017-11-11 14:21 | 显示全部楼层
我们都懂,就楼主不明白,要down干什么,要从上到下和从下到上是一样的。你要说明哪列用上down也行,反正B列用down不合适。还有,这里用不用down与方向没关系的。有关系的是4 to  **还是*** to 4


这样好了For n = 4 ToRange("B198").End(xldown).Row
但是有点可笑。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 06:07 , Processed in 0.236283 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表