Excel精英培训网

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

[已解决]筛选后的(xlup).row结果与事实不符

[复制链接]
发表于 2011-6-9 10:28 | 显示全部楼层 |阅读模式
Private Sub CommandButton1_Click()
 MsgBox [a65536].End(xlUp).Row
End Sub

  在进行自动筛选后,代码得到的row与实际非空单元格所在行不符,如何解决这个问题呢?


最佳答案
2011-6-9 13:09
amulee 发表于 2011-6-9 11:25
用函数方法吧

哦,这个2003会出错,用在2007没问题。2003里面的整列不能运算,那就换个公式吧。
  1. MsgBox [IF(A65536<>"",65536,MATCH(1, 0 / (A1:A65535 <> "")))]
复制代码




发表于 2011-6-9 10:55 | 显示全部楼层
MsgBox Sheet1.UsedRange.EntireRow.Count
MsgBox Range("A1").CurrentRegion.EntireRow.Count

点评

这个倒是有点可行,但是有格式无数据的行也被统计在内了,故也不是实际非空的最后一个单元格所在行。  发表于 2011-6-9 12:05
回复

使用道具 举报

发表于 2011-6-9 10:52 | 显示全部楼层
回复 wayy 的帖子

222.rar (9.56 KB, 下载次数: 3)

点评

感谢回复,不过不知道测试没有,两个结果一致,可以筛选第二行看一下。  发表于 2011-6-9 11:28
回复

使用道具 举报

发表于 2011-6-9 10:56 | 显示全部楼层
再就是 先取消筛选 然后 定位
回复

使用道具 举报

发表于 2011-6-9 11:04 | 显示全部楼层
各有利弊,视情况而定。
还有:
MsgBox Sheet1.UsedRange(1).Row + Sheet1.UsedRange.Rows.Count - 1
回复

使用道具 举报

发表于 2011-6-9 11:25 | 显示全部楼层
用函数方法吧
  1. MsgBox [Match(1, 0 / (A:A <> ""))]
复制代码

点评

提示类型不匹配,请木兄指点。  发表于 2011-6-9 12:09
回复

使用道具 举报

 楼主| 发表于 2011-6-9 12:26 | 显示全部楼层
目前解决方法就是先判断是否筛选状态,如果是筛选然后去掉筛选再执行就可以了。
回复

使用道具 举报

发表于 2011-6-9 12:37 | 显示全部楼层
从[a65536]往上循环,这样也是很快的
回复

使用道具 举报

发表于 2011-6-9 13:09 | 显示全部楼层    本楼为最佳答案   
amulee 发表于 2011-6-9 11:25
用函数方法吧

哦,这个2003会出错,用在2007没问题。2003里面的整列不能运算,那就换个公式吧。
  1. MsgBox [IF(A65536<>"",65536,MATCH(1, 0 / (A1:A65535 <> "")))]
复制代码




回复

使用道具 举报

发表于 2011-6-9 13:18 | 显示全部楼层
本帖最后由 Zipall 于 2011-6-10 15:01 编辑

我觉得这题的标题不"实际".
如果你认为它得到结果和"实际"不一样,那是因为你对end的认识出现了偏差.

点评

你认识End应该如何认识呢?  发表于 2011-6-11 12:40
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 01:49 , Processed in 0.462378 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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