【问题标题】:Excel Select Range even if the bottom right cell is empty即使右下角的单元格为空,Excel 也选择范围
【发布时间】:2018-06-12 16:10:37
【问题描述】:

我正在尝试在我的 Excel 工作表中选择一个范围,但我就是不知道怎么做。数据的方式是Row 2 中的所有单元格都填充到末尾,Column A 中的所有单元格都填充到底部。但在表格内可以有空单元格。所以右下角也可以是空的。我希望范围从 A3 开始。

我曾尝试以这种方式选择范围:

Range("A3",Range("ZZ2").End(xlToLeft).Range("A1000000").End(xlUp)).Select

或者这样:

Range("A3",Range("A1000000").End(xlUp).Range("ZZ2").End(xlToLeft).).Select

但无论哪种方式,整个表格都不会被选中,因为右下角的单元格中没有任何内容。我觉得必须有一个简单的解决方案,但我就是看不到它。

这是表格外观的一个简单示例。我要选择的范围是绿色区域。

【问题讨论】:

  • 确实有一个简单的解决方案,但解释不是很清楚。在这种情况下,一张图片会很有帮助。

标签: excel vba


【解决方案1】:

看看这段代码。它将分别计算最后一列和最后一行 - 假设您至少有一行和一列已完全填写。查看您的示例数据,我采用了您的标题行 (=2) 和第一列 (=A)

Dim r As Range, row As Long, col As Long
With ActiveSheet
    ' Look in Col A (=1) to figure out number of rows
    row = .Cells(.Rows.Count, 1).End(xlUp).row 
    ' Look in Row 2 to figure out number of columns
    col = .Cells(2, .Columns.Count).End(xlToLeft).Column
    Set r = .Range(.Cells(3, 1), .Cells(row, col))
End With
Debug.Print r.Address

【讨论】:

  • 谢谢。我不得不删除第四行中的 (=1),但效果很好。
  • 对不起,这是一个意外(应该是评论的一部分) - 编辑了我的答案
【解决方案2】:

试试,

range(cells(3, "A"), cells(2, columns.count).end(xltoleft).offset(cells(rows.count, "A").end(xlup).row - 2, 0)).select

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2023-03-30
    相关资源
    最近更新 更多