- Tham gia
- 8/10/21
- Bài viết
- 10
- Được thích
- -1
Vậy cuối cùng là điều kiện cột ẩn hay sheet ẩn hả bạn.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
View attachment 267549
Phải đúng 2 trường hợp luôn bạn nhé.Vậy cuối cùng là điều kiện cột ẩn hay sheet ẩn hả bạn.
Khi sheet đó ẩn đi, bạn làm thế nào để nhìn được đúng hay sai.Phải đúng 2 trường hợp luôn bạn nhé.
Code:Phải đúng 2 trường hợp luôn bạn nhé.
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.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
Bị ẩn phải dùng cách đếm từng ô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.
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
Đ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.LastRow2 = i