【问题标题】:Select last cell in a column with blanks选择有空格的列中的最后一个单元格
【发布时间】:2015-03-06 23:57:47
【问题描述】:

我正在尝试查找用 VBA 中的数据填充的列中的最后一个单元格。问题是,在该范围内,有空白单元格。如果有空格,有什么方法可以选择最后一个包含数据的单元格?任何帮助将不胜感激!我在下面粘贴了我的范围定义。

If Range("BL2") <> "" Or Range("BM2") <> "" Then
                            Set usr11 = Range("BL:BL")
                            Set usr12 = Range("BM:BM")

【问题讨论】:

  • 这个问题不够精确,关于你想找到最后一行的那一列,“BL”或“BM”,或两者兼而有之......?

标签: vba excel range


【解决方案1】:

我不确定这是不是你要找的东西

这是我用来获取最后一行的;只需给它一栏和一张纸。

Function getLastRow(sheet As String, Col As Variant) As Integer
    getLastRow = Sheets(sheet).Cells(Sheets(sheet).Rows.Count, Col).End(xlUp).row
End Function

那么你可以这样使用它:

Range("A" & getLastRow(ActiveSheet,"A")).Select 'Select the last row in column A

获取最后一列数据的类似函数:

Function getLastCol(sheet As String, row As Variant) As Integer
    getLastCol = Sheets(sheet).Cells(row, Sheets(sheet).Columns.Count).End(xlToLeft).Column
End Function

【讨论】:

  • 如果您在 ThisWorkbook 上工作,但使用 addin... 或其他全局工作布尔函数,您不会得到好的结果。
【解决方案2】:

使用查找

这将在 ActiveSheet 上工作

Dim lngLastRow as Long

'If column is A
lngLastRow = Columns(1).Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

【讨论】:

  • 我可以用 usr11.Cells 代替 ActiveSheet 吗?
  • 范围变量usr11可以代替Columns(1)
  • @Philip Columns 也是 Activesheet 的列。您的 Range 是一个 Columns 范围。所以: Range("BL:BL") = Columns("BL:BL") = Columns("BL") = Columns(64) 。供您参考 Excel 转换索引数字或字母,因为它也使用 L1R1 系统表示法
【解决方案3】:

这对你有用

Sub SelectBlank()
    Dim lastRow As Long: lastRow = Range("A1").End(xlDown).Row 'change to whatever column you have
    Dim i As Long
    For i = 1 To lastRow
        If Range("A" & i).Value = "" Then
            Range("A" & i).Select
            Exit For
        End If
    Next i
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多