25/05/2018, 23:31

XÁC ĐỊNH Ô CHỨA GIÁ TRỊ CUỐI CÙNG TRONG MỘT CỘT HOẶC MỘT HÀNG

Tip này sẽ chỉ bạn hai hàm hữu dụng trong VBA có thể được áp dụng trong worksheet. Hàm LASTINCOLUMN trả về nội dung của ô có giá trị cuối cùng trong một cột; hàm LASTINROW trả về nội dung của ô có giá trị cuối cùng trong một hàng. Mỗi hàm sẽ chỉ áp dụng cho một dãy được coi như là một tham số. Nếu ...

Tip này sẽ chỉ bạn hai hàm hữu dụng trong VBA có thể được áp dụng trong worksheet. Hàm LASTINCOLUMN trả về nội dung của ô có giá trị cuối cùng trong một cột; hàm LASTINROW trả về nội dung của ô có giá trị cuối cùng trong một hàng. Mỗi hàm sẽ chỉ áp dụng cho một dãy được coi  như là một tham số. Nếu tham số được cung cấp không hoàn toàn là một cột hay một hàng thì hàm sẽ sử dụng cột hoặc hàng của ô ở phía trên bên trái. Ví dụ, công thức dưới đây trả về giá trị cuối cùng của cột B.

=LASTINCOLUMN(B5)

Công thức dưới đây trả về giá trị cuối cùng trong hàng 7

=LASTINROW(C7:D9)

Bạn sẽ thấy rằng những hàm này thực hiện rất nhanh vì chúng chỉ kiểm tra những ô là giao giữa một cột hay một hàng cụ thể với dãy được lựa chọn trong worksheet.

Hàm LASTINCOLUMN

Function LASTINCOLUMN(rngInput As Range)
    Dim WorkRange As Range
    Dim i As Long, CellCount As Long
    Application.Volatile
    Set WorkRange = rngInput.Columns(1).EntireColumn
    Set WorkRange = Intersect(WorkRange.Parent.UsedRange, WorkRange)
    CellCount = WorkRange.Count
    For i = CellCount To 1 Step -1
        If Not IsEmpty(WorkRange(i)) Then
            LASTINCOLUMN = WorkRange(i).Value
            Exit Function
        End If
    Next i
End Function

Hàm LASTINROW

Function LASTINROW(rngInput As Range) As Variant
    Dim WorkRange As Range
    Dim i As Long, CellCount As Long
    Application.Volatile
    Set WorkRange = rngInput.Rows(1).EntireRow
    Set WorkRange = Intersect(WorkRange.Parent.UsedRange, WorkRange)
    CellCount = WorkRange.Count
    For i = CellCount To 1 Step -1
        If Not IsEmpty(WorkRange(i)) Then
            LASTINROW = WorkRange(i).Value
            Exit Function
        End If
    Next i
End Function
0