Thầy cho tôi hỏi. Tôi muốn tìm dòng cuối của sheet đã lọc rồi thì sao ạ. Tức là bỏ quả những dòng ẩn
Chào bạn bạn vẫn sử dụng như sau nhé
Sheetname.Range(cot.Rows.Count).End(xlUp).Row
Cảm ơn thầy. Ý tôi muốn là ví du tôi có 1 bảng dữ liệu 100 dong sau khi tôi loc rồi thì bảng chỉ còn 20 dong. Tôi muốn tìm dòng cuối bằng 20 dong chứ không không phải 100 dong.
Còn câu lệnh thầy chỉ hình như là vẫn ra 100 thầy ơi
Chào bạn bạn lọc trực tiếp trên data? thường thì phương pháp lọc sẽ là tạo ra sheets mới và lọc dữ liệu đó.
Với việc filter bảng dữ liệu thì bạn cần đặt lại lệnh tìm dòng cuối bên dưới lệnh filter => lúc này lệnh tìm dòng cuối sẽ tính theo kết quả là dòng cuối của phần dữ liệu đã filter.
Ví dụ như sub bên dưới:
Sub lr_filter()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim lr As Long, LRfilt As Long
With ws
lr = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A1:A" & lr).AutoFilter Field:=1, Criteria1:="=4"
LRfilt = .Range("A" & Rows.Count).End(xlUp).Row
Debug.Print lr
Debug.Print LRfilt
End With
End Sub
Bạn có cột A chứa các số ngẫu nghiên, sau đó lọc theo giá trị = 4
Khi đó biến lr cho kết quả là dòng cuối khi chưa lọc
biến LRfilt sẽ cho kết quả là dòng cuối sau khi lọc
Cảm ơn 2 giảng viên
2 biến đều bằng 11 hết giảng viên ơi
bạn xem nhé
Option Explicit
Sub Timdong()
Dim dc As Long, i As Long, k As Long
With Sheet1
dc = .Range("A" & .Rows.Count).End(xlUp).Row
'bo loc
.Range("A1:A" & dc).AutoFilter Field:=1
' dung vong lap de thuc hien lap gia tri
For i = 2 To dc
If (.Range("A" & i) = .Range("B1").Value) Then
k = k + 1
End If
Next i
'Loc
.Range("A2:A" & dc).AutoFilter Field:=1, Criteria1:="" & .Range("B1").Value & ""
End With
' xuat ra bien K la so dong
MsgBox k
End Sub
Cảm ơn giảng viên nhiêu
Chúc bạn học tốt cùng gitiho nhưng thực chất gitiho chưa hiểu bạn làm để làm gì cái này
Tôi đang muốn copy dữ liệu từ bảng dữ liệu đã lọc sang một sheet khác dán giá trị của bảng thôi bỏ đi những hàng ẩn
Chào bạn nếu vậy bạn dùng advanced hoặc dùng vòng lặp sét theo giá trị là được nhé.
Cảm ơn Gitiho