首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA查找列未知的最后一行和行未知的最后一列

VBA查找列未知的最后一行和行未知的最后一列
EN

Stack Overflow用户
提问于 2022-04-13 18:31:39
回答 1查看 513关注 0票数 0

要找到最后一行或列,我通常会使用如下内容:

代码语言:javascript
运行
复制
LR = Cells(Rows.Count, 1).End(xlUp).Row
LC = Cells(1, Columns.Count).End(xlToLeft).Column

但是,在没有列头的情况下,我试图找到最右边的列,我希望找到的列可能是B列(IE "B27"),也可能是列Z (IE "Z1000"),或者任何随机单元格。

类似地,我还试图在同一工作表中找到最后一行,没有列标题,最后一行可能在任何列中。

知道如何做可以在几个场景中有所帮助,但为了详细说明我的当前场景,我尝试连接一些从其他源复制的行,并有许多选项卡。有时标签在行的开头,有时在中间。当然,这会将每条线推入多个单元格中,有时会向右很远。

这些文档通常不超过10k行,因此我考虑编写一种“蛮力”类型的代码,如:

代码语言:javascript
运行
复制
Private Sub Concatenate_20k_Rows()

    Dim ws As Worksheet
    Dim cell As Range
    Dim LC As Long, i As Long
    
    Set ws = ActiveSheet
    
    For Each cell In ws.Range("A1:A20000")
        LC = Cells(cell.Row, Columns.Count).End(xlToLeft).Column
        For i = 1 To LC
            cell.Value = cell.Value & " " & cell.Offset(0, i).Value
        Next i
        cell.Value = Application.Trim(cell.Value)
    Next cell

End Sub

我想找到标题未知的最后一列对我的场景来说并不重要,但是找到最后一行可能很有用,所以如果只有2k行的话,我不需要强行遍历20k行,或者不必冒着没有足够远的风险超过20k行的风险。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-13 18:56:39

您可以使用Range.Find方法。

如前所述,这将返回一个2元素数组,其中

  • 第一个元素=行数
  • 和第二个元素=列编号.

代码语言:javascript
运行
复制
Option Explicit
Function LastRC(Worksht As String) As Long()
'Uncomment if on worksheet
'Application.Volatile
    Dim WS As Worksheet, R As Range
    Dim LastRow As Long, LastCol As Long
    Dim L(1) As Long
    Dim searchRng As Range

Set WS = Worksheets(Worksht)
Set searchRng = WS.Cells

With searchRng
    Set R = .Cells.Find(what:="*", after:=.Cells(1, 1), _
                    LookIn:=xlFormulas, lookat:=xlPart, searchorder:=xlByRows, _
                    searchdirection:=xlPrevious)

    If Not R Is Nothing Then
        LastRow = R.Row
        LastCol = .Cells.Find(what:="*", after:=.Cells(1, 1), _
                    LookIn:=xlFormulas, lookat:=xlPart, searchorder:=xlByColumns, _
                    searchdirection:=xlPrevious).Column
    Else
        LastRow = 1
        LastCol = 1
    End If
End With

L(0) = LastRow
L(1) = LastCol
LastRC = L
End Function
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71862337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档