【问题标题】:Excel VBA - selecting range to last completely blank rowExcel VBA - 选择最后一个完全空白行的范围
【发布时间】:2017-02-14 09:13:27
【问题描述】:

我有一些 VBA 代码需要选择从 A84 到 X 的范围。我正在使用此代码将该范围选择到数据的最后一行。

Dim Lastrow As Integer
Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Range("A84:X" & Lastrow).Select

这将在第一行的 A 列中有一个空白单元格处停止。我需要它来检查 A 到 Z 列,而不仅仅是 A。例如,如果第 84 到 94 行的 A 列中有值,但对于第 95 行,F 或 R 列中只有数据,它不会包括第 95 行。如何查看 A:Z 列来确定该行是否为空白?

【问题讨论】:

  • X 或列 Z ??
  • 好吧,我需要选择范围内的 X 列,但我需要它来检查 A:Z 以确定它是否为空白。

标签: vba excel


【解决方案1】:

只需将Lastrow 设置为

Lastrow = Range("A:Z").Find("*", , , , xlByRows, xlPrevious).Row

【讨论】:

    【解决方案2】:

    我几乎可以肯定有更好的方法,但其中一种方法是遍历你的列并找到每个列的最后一行,然后确定其中哪一个是最大的。

    maxRow = 0
    for i=1 to 24 'A through X
        if maxRow < ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row then
            maxRow = ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row
        end if
    next i
    

    那么maxRow 就是你想要的lastrow

    【讨论】:

      【解决方案3】:

      您可以遍历所有列并比较每列的最后一行。然后,您可以在找到包含更多行的列时更改 lastRow 变量,如下所示:

      Dim i As Integer
      Dim lastRow As Integer
      lastRow = 1
      For i = 1 To 26
          Dim lst As Integer
          lst = Cells(Rows.Count, i).End(xlUp).Row
          If lst > lastRow Then
              lastRow = lst
          End If
      Next
      Range("A84:X" & lastRow).Select
      

      【讨论】:

        【解决方案4】:

        您可以使用 usedrange 函数,它返回工作表上已用单元格的完整范围:,如下:

        Worksheets("worksheetName").UsedRange.lastRow

        这将为您提供最后一个使用行,而不仅仅是第一列中包含数据的最后一行

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-10
          • 2023-03-12
          • 1970-01-01
          • 2019-08-05
          • 1970-01-01
          • 2017-02-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多