Excel VBA使用列最后一行获取代码遍历整列数值的实现方法
Excel VBA 遍历指定列有效数值区间方案
实现思路
你已获取到第4列(D列)最后一个有值单元格的行号,只需先定位该列第一个有值单元格的行号,再对行号区间遍历即可,下面提供两种常用实现方式:
方式1:逐单元格遍历(适合小数据量)
该方式逻辑直观,直接遍历区间内每个单元格取值,代码示例:
Sub 遍历D列有效数值() Dim firstRow As Long, lastRow As Long, i As Long ' 取D列最后一行行号 lastRow = Cells(Rows.Count, 4).End(xlUp).Row ' 定位D列第一个有数值的行号,兼容列首/中间有空行的场景 firstRow = Columns(4).Find(What:="*", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext).Row ' 整列无数据时直接退出,避免报错 If lastRow < firstRow Then Exit Sub ' 逐行遍历取值 For i = firstRow To lastRow ' 此处替换为你自己的处理逻辑,示例为将值打印到立即窗口 Debug.Print Cells(i, 4).Value Next i End Sub
方式2:数组遍历(适合大数据量,效率更高)
数据量超过1000行时推荐用该方案,将整段区域一次性读入内存数组再遍历,效率远高于逐单元格读取:
Sub 数组方式高效遍历() Dim firstRow As Long, lastRow As Long Dim dataArr As Variant, i As Long lastRow = Cells(Rows.Count, 4).End(xlUp).Row firstRow = Columns(4).Find(What:="*", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext).Row If lastRow < firstRow Then Exit Sub ' 将有效区域一次性读入数组 dataArr = Range(Cells(firstRow, 4), Cells(lastRow, 4)).Value ' 遍历数组取值 For i = 1 To UBound(dataArr, 1) ' 数组第i项对应原表第 firstRow + i -1 行的D列数值 Debug.Print dataArr(i, 1) Next i End Sub
注意事项
- 若D列第一行是固定表头无需遍历,可直接将
firstRow赋值为表头下第一行的行号(通常为2),无需调用Find方法 - 仅当D列第一个数值上方无空行时,才可以用
Cells(1,4).End(xlDown).Row取首行,否则优先用Find方法避免定位偏差 - 若需要判断单元格是否为数值类型,可在遍历逻辑中加
If IsNumeric(Cells(i,4).Value) Then的判断条件过滤非数值内容
内容的提问来源于stack exchange,提问作者user58518
相关产品推荐
相关产品推荐

