Excel精英培训网

 找回密码
 注册

QQ登录

只需一步,快速开始

你正在寻找更好的Excel学习教程吗?Excel技巧80集+数据透视表+函数初中高全套+VBA80集,想学的这儿全都有
查看: 556|回复: 25

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

[复制链接]
发表于 2017-11-10 19:12 | 显示全部楼层 |阅读模式
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
如下代码:

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 15:19 | 显示全部楼层
uqfyplj 发表于 2017-11-11 15:08
大虾在请教一个问题:代码"For n = 199 To 4 Step -1"中"Step -1"是什么意思?

步长是负1
例如 for x = 1 to 10
它的步长是1,只不过步长是1时可以省略
回复 支持 1 反对 0

使用道具 举报

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

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

使用道具 举报

发表于 2017-11-10 19:23 | 显示全部楼层
range("b4").end(xldown).row
回复 支持 反对

使用道具 举报

 楼主| 发表于 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-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, 2018-10-18 14:09 , Processed in 0.093600 second(s), 14 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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