Find last row in range

前端 未结 11 2006
傲寒
傲寒 2020-12-02 00:41

I\'m having a little trouble with finding the last row.

What I am trying to do is find the last row in column "A", then use that to find the last row within

相关标签:
11条回答
  • 2020-12-02 01:16
    LR_wbSelectNew = wbshtSelect.cells(LR_wbSelect, "B").End(xlUp).Row
    

    Why are you using "LR_wbSelect" as the row counter? If you want to know the last row of column 'B', you should use Rows.count

    Rows.count --> Returns maximum number of rows (which is 1048576 for Excel 2007 and up) End(xlUp) --> Moves the pointer upward to the last used row

    So, cells(Rows.count, "A").End(xlUp).Row --> This moves the pointer to the last row if the column 'A' (as if you are pressing Crtl+Up keys when A1048576 cell is selected)

    So, use Rows.count to select the last row for column 'B' as well. If you have some specific requirement related to LR_wbSelect, please mention it.

    Alternatively, if you want to know the last row used in a sheet, you may use the below:

    mySheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    
    0 讨论(0)
  • 2020-12-02 01:16

    Shai Rado's first solution is a great one, but for some it might need a bit more elaboration:

     Dim rngCurr, lastRow
     rngCurr = wbshtSelect.Range("B10").CurrentRegion
     lastRow = rngCurr.Rows(rngCurr.Rows.Count).Row
    

    If you want to know the last used row in the entire worksheet:

     Dim rngCurr, lastRow
     rngCurr = Range("A1").CurrentRegion
     lastRow = rngCurr.Rows(rngCurr.Rows.Count).Row
    
    0 讨论(0)
  • 2020-12-02 01:19

    Before getting into complex coding why not build something on the below principle:

    MaxRow = Application.Evaluate("MIN(ROW(A10:C29)) + ROWS(A10:C29) - 1")

    0 讨论(0)
  • 2020-12-02 01:21

    There are mulitple results and methods when searching for the LastRow (in Column B).

    When using Cells(.Rows.Count, "B").End(xlUp).Row you will get the last row with data in Column B (it ignores rows with spaces, and goes all the way down).

    When using:

     With wbshtSelect.Range("B10").CurrentRegion
         LR_wbSelectNew = .Rows(.Rows.Count).Row
     End With
    

    You are searching for the last row with data in Column B of the CurrentRegion, that starts from cell B10, untill the first line without data (it stops on the first row with empty row).

    Full Code:

    Sub GetLastRow()
    
    Dim wbshtSelect         As Worksheet
    Dim LR_wbSelectNew      As Long
    
    ' modify "Sheet2" to your sheet's name
    Set wbshtSelect = Sheets("Sheet2")
    
    ' find last row with data in Column B
    With wbshtSelect
        LR_wbSelectNew = .Cells(.Rows.Count, "B").End(xlUp).Row
    End With
    ' for debug only
    Debug.Print LR_wbSelectNew ' >>result 31
    
    ' find last row with data in Column B at current regioun starting at cell B10
    With wbshtSelect.Range("B10").CurrentRegion
        LR_wbSelectNew = .Rows(.Rows.Count).Row
    End With
    ' for debug only
    Debug.Print LR_wbSelectNew ' >> result 18
    
    End Sub
    

    Edit1: code searches for last row for cells with values (it ignores blank cells with formulas inside).

    Sub GetLastRow()
    
    Dim wbshtSelect         As Worksheet
    Dim LR_wbSelectNew      As Long
    
    ' modify "Sheet2" to your sheet's name
    Set wbshtSelect = Sheets("Sheet2")
    
    ' find last row with data in Column B at current regioun starting at cell B10
    With wbshtSelect.Range("B10").CurrentRegion
        LR_wbSelectNew = .Rows(.Rows.Count).Row
    End With
    
    Dim Rng         As Range    
    Set Rng = wbshtSelect.Range("B10:B" & LR_wbSelectNew)
    
    ' find last row inside the range, ignore values inside formulas
    LR_wbSelectNew = Rng.Find(What:="*", _
                        After:=Range("B10"), _
                        LookAt:=xlPart, _
                        LookIn:=xlValues, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlPrevious, _
                        MatchCase:=False).Row
    
    ' for debug
    Debug.Print LR_wbSelectNew  ' << result 18 (with formulas in the range)
    
    End Sub
    
    0 讨论(0)
  • 2020-12-02 01:23
    LR_wbSelect = ThisWorkbook.Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
    
    0 讨论(0)
  • 2020-12-02 01:24

    Hope this piece of code helps !

    Sub LastRowInOneColumn()
    'Find the last used row in a Column: column A in this example
        Dim LastRow As Long
        With ActiveSheet
            LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        End With
        MsgBox LastRow
    End Sub
    
    0 讨论(0)
提交回复
热议问题