Function Tính dòng cuối cùng trong 1 vùng

Liên hệ QC

BinhCan997

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
8/10/21
Bài viết
10
Được thích
-1
Mình cần viết 1 hàm tính dòng cuối cùng trong 1 cột. Nhưng phải đảm bảo khi Sheet đó ẩn đi thì vẫn tính đúng
Mình đã thử End(xlUp).Row nhưng khi cột đó ẩn đi thì không cho kết quả chính xác. Xin cảm ơn

1633970553072.png
 
Upvote 0
Phải đúng 2 trường hợp luôn bạn nhé.
Code:
Rich (BB code):
Function LastRow(rng As Range)
Dim Lrw&, Lcl&
    Lrw = Sheets(rng.Parent.Name).Range(rng.Address).Rows.Count + Sheets(rng.Parent.Name).Range(rng.Address).Row - 1
    Lcl = rng.Column
    If Len(Sheets(rng.Parent.Name).Cells(Lrw, Lcl)) = 0 Then
        LastRow = Sheets(rng.Parent.Name).Cells(Lrw, Lcl).End(xlUp).Row
    Else
        LastRow = Lrw
    End If
End Function
 
Upvote 0
Code:
Rich (BB code):
Function LastRow(rng As Range)
Dim Lrw&, Lcl&
    Lrw = Sheets(rng.Parent.Name).Range(rng.Address).Rows.Count + Sheets(rng.Parent.Name).Range(rng.Address).Row - 1
    Lcl = rng.Column
    If Len(Sheets(rng.Parent.Name).Cells(Lrw, Lcl)) = 0 Then
        LastRow = Sheets(rng.Parent.Name).Cells(Lrw, Lcl).End(xlUp).Row
    Else
        LastRow = Lrw
    End If
End Function
Anh có thể phát triển thêm trong trường hợp dòng bị ẩn không ạ? Ví dụ dòng bị ẩn do autofilter.
 
Upvote 0
Anh có thể phát triển thêm trong trường hợp dòng bị ẩn không ạ? Ví dụ dòng bị ẩn do autofilter.
Bị ẩn phải dùng cách đếm từng ô
Rich (BB code):
Function LastRow(rng As Range)
Dim Lrw&, Lcl&, arr, i&, k&, C&
    Lrw = Sheets(rng.Parent.Name).Range(rng.Address).Rows.Count + Sheets(rng.Parent.Name).Range(rng.Address).Row - 1
    Lcl = rng.Column
    arr = Sheets(rng.Parent.Name).Range(Sheets(rng.Parent.Name).Cells(1, rng.Column), Sheets(rng.Parent.Name).Cells(Lrw, rng.Column)).Value
    C = WorksheetFunction.CountA(Sheets(rng.Parent.Name).Range(Sheets(rng.Parent.Name).Cells(1, rng.Column), Sheets(rng.Parent.Name).Cells(Lrw, rng.Column)))
    For i = 1 To UBound(arr)
        If Len(arr(i, 1)) > 0 Then k = k + 1
        If k = C Then Exit For
    Next
    'LastRow2 = i
LastRow = i
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Đoạn này chắc anh viết nhanh nên nhầm. Em đã thử 3 trường hợp và đều ra kết quả. Em cảm ơn anh.
À, quên. Trong máy tôi thêm số 2 để cho khác với hàm ở bài #5 nhưng chép lên đây bỏ được số 2 ở trên nhưng quên ở dưới --=0
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom