Skip to main content

如何获取 Excel Sheet 最后一列数据的列号

Excel 遍历工作表最后一行非空值数据的行号在《Excel 2010 VBA 入门与提高》有示范,但依样画葫芦却得不到 VBA 获取最后一列非空值数据的列号。

Google 一下,在 Stackoverflow 得到了启发:


Sub 获取最后数据的列数()

  '变量声明
  Dim ColN As Long

  '从工作表 Sheet1 第3行(标题)最后数据为非空值的列向左递减遍历
  ColN = Sheet1.Cells(3, Columns.Count).End(xlToLeft).Column

  '输出列号
  Debug.Print "最后数据为非空值的列号为:" & ColN

End Sub

但是 End(Direction) 属性适用于可见单元格,一旦有数据列隐藏,End(Direction) 不会得到正确的结果。 VBA 获取最后一列非空值数据的列号考虑使用 For 循环:


Sub 获取最后数据的列数()
  '变量声明
  Dim ColN As Long
  
  '利用For循环从最后一列非空值列递减遍历
  For ColN = Columns.Count To 1 Step -1
    If Cells(3, ColN).Value <> "" Then
        Debug.Print "最后数据为非空值的列号为:" & ColN
        Exit For
    End If
  Next ColN
End Sub

Comments

TOP