Excel精英培训网

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

[已解决]怎么用vba获取不连续的非空单元格的值

[复制链接]
发表于 2023-2-6 18:21 | 显示全部楼层 |阅读模式
本帖最后由 zscaa 于 2023-2-6 22:12 编辑

各位大神,请问下如何快速用VBA获取非空单元格的值?就比如A3的值为100,那么我可以定位到A3然后获取A3里面的值,有什么方法可以快速定位所有非空单元格然后获取单元格里面的信息吗?(PS:不用一个个单元格循环遍历的情况,因为数据量有点大,附件只是部分数据)
最佳答案
2023-2-6 22:41
zscaa 发表于 2023-2-6 22:10
就比如A3的值为100,那么我可以定位到A3然后获取A3里面的值,有什么方法可以快速定位所有非空单元格然后 ...

看走眼了,不过应该少不了遍历循环的。用SpecialCells可以少循环一点。其实写入数组再来循环应该也不慢的。
Sub test()
    Dim rng As Range, rg As Range
    Set rng = Sheet1.UsedRange.SpecialCells(xlCellTypeConstants)
    For Each rg In rng
        Debug.Print rg.Value
    Next
End Sub


捕获3.PNG

新建 Microsoft Excel 工作表.zip

6.6 KB, 下载次数: 2

发表于 2023-2-6 19:58 | 显示全部楼层
不想遍历那用工作表函数来计算
Sub test()
    Dim num&
    num = WorksheetFunction.CountA(Cells)
    MsgBox "非空单元格数量:" & num & "个"
End Sub
回复

使用道具 举报

 楼主| 发表于 2023-2-6 22:06 | 显示全部楼层
哥儿- 发表于 2023-2-6 19:58
不想遍历那用工作表函数来计算
Sub test()
    Dim num&

我这个不是要计算非空单元格的数目,是想定位到获取这些单元格的位置来获取里面的值
回复

使用道具 举报

 楼主| 发表于 2023-2-6 22:10 | 显示全部楼层
哥儿- 发表于 2023-2-6 19:58
不想遍历那用工作表函数来计算
Sub test()
    Dim num&

就比如A3的值为100,那么我可以定位到A3然后获取A3里面的值,有什么方法可以快速定位所有非空单元格然后获取单元格里面的信息吗?
回复

使用道具 举报

发表于 2023-2-6 22:41 | 显示全部楼层    本楼为最佳答案   
zscaa 发表于 2023-2-6 22:10
就比如A3的值为100,那么我可以定位到A3然后获取A3里面的值,有什么方法可以快速定位所有非空单元格然后 ...

看走眼了,不过应该少不了遍历循环的。用SpecialCells可以少循环一点。其实写入数组再来循环应该也不慢的。
Sub test()
    Dim rng As Range, rg As Range
    Set rng = Sheet1.UsedRange.SpecialCells(xlCellTypeConstants)
    For Each rg In rng
        Debug.Print rg.Value
    Next
End Sub


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 15:14 , Processed in 0.294048 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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