mình mới học viết nên k biết thế nào? hi vọng giúp đc bạnEM muốn lọc dữ liệu từ Sheet 2 sang Sheet 3 theo điều kiện ở 2 ô: C5 và D5 trong sheet1. Mong được sự giúp đỡ của các thành viên, em xin chân thành cảm ơn!
[GPECODE=vb]
Sub loc()
Dim rg As Range
Sheet3.Range("B4:H1000").ClearContents
Set rg = Sheet2.Range("A4:H44")
rg.AdvancedFilter 2, Sheet1.Range("C45"), [B4]
End Sub
[/GPECODE]
thấy hay mà chả hiểu đcrg.AdvancedFilter 2, Sheet1.Range("C45"), [B4]
Bạn tham khảo:EM muốn lọc dữ liệu từ Sheet 2 sang Sheet 3 theo điều kiện ở 2 ô: C5 và D5 trong sheet1. Mong được sự giúp đỡ của các thành viên, em xin chân thành cảm ơn!
Sub abc()
On Error Resume Next
Range("B5:H1000").ClearContents
Range("B5:H1000").ClearFormats
With Sheets("Sheet2")
.AutoFilterMode = False
With .Range("b4:h" & .Cells(Rows.Count, "b").End(xlUp).Row)
.AutoFilter Field:=6, Criteria1:=Sheets("Sheet3").Range("K1:K2").Value
.AutoFilter Field:=7, Criteria1:=Sheets("Sheet3").Range("L1:L2").Value
.Offset(1).Copy Sheets("Sheet3").Range("b5")
.AutoFilter
End With
End With
End Sub
Chị có thể hiểu sơ sơ thế này ạ:khuongvietphong ơi giải thích giúp chị dòng này với
thấy hay mà chả hiểu đcThanks e nhiều
rg.AdvancedFilter 2, Sheet1.Range("C4:D5"), [B4]
Đây là câu lệnh dùng để lọc dữ liệu từ vùng rg đến vùng B4. Số 2 tương ứng với hằng số xlFilterCopy, xác định việc lọc này là để copy kết quả lọc sang vùng khác; Sheet1.Range("C4khuongvietphong ơi giải thích giúp chị dòng này với
thấy hay mà chả hiểu đcrg.AdvancedFilter 2, Sheet1.Range("C45"), [B4]
Thanks e nhiều
Thì ra vậy, cảm ơn em nhé, c k nghĩ đến Advanced filterChị có thể hiểu sơ sơ thế này ạ:
Mã:rg.AdvancedFilter 2, Sheet1.Range("C4:D5"), [B4]
rg: là vùng dữ liệu gốc
AdvancedFilter2: phương thức AdvancedFilter có thể chọn 1 trong 2 giá trị {1 hoặc 2}: 1 là lọc và thay thế, 2 là lọc và
Copy sang vùng khác
Sheet1.Range("C45") : là vùng chứa điều kiện
[B4] : là cell đầu tiên của vùng muốn đặt kết quả
PS: Để hiểu cặn kẽ hơn chị có thể Search với từ khóa Advanced trên GPE để tìm hiểu thêm !
Cảm ơn anh Nghĩa Phúc nhiều ạ.Đây là câu lệnh dùng để lọc dữ liệu từ vùng rg đến vùng B4. Số 2 tương ứng với hằng số xlFilterCopy, xác định việc lọc này là để copy kết quả lọc sang vùng khác; Sheet1.Range("C45") chính là bảng tiêu chuẩn lọc (Criteria range); [B4] chính là nơi chứa kết quả lọc.
Trực quan hơn một chút: Bạn nhìn trên hộp thoại Advanced Filter sau:
View attachment 160966
- Số 2 tương ứng với tùy chọn Copy to another location
- rg chính là List range
- Sheet1.Range("C45") chính là Criteria range
- [B4] là Copy to.
Spam: Advanced filter rất mạnh mẽ đó Hương. Nghiên cứu sâu hơn đi, rồi biến nó thành VBA. Rất thuận lợi để làm báo cáo.Thì ra vậy, cảm ơn em nhé, c k nghĩ đến Advanced filter![]()
Em vẫn dùng Advanced nhưng ở mức bình thường, Nghe câu spam này của anh là em phải chú tâm học hành tử tế vụ này rồi ạ. Hì. E cảm ơn anh Tú nhéSpam: Advanced filter rất mạnh mẽ đó Hương. Nghiên cứu sâu hơn đi, rồi biến nó thành VBA. Rất thuận lợi để làm báo cáo.
Em cảm ơn anh nhiều nhiều, nhưng sao em copy đoạn mã trên vào mà vẫn k chạy[GPECODE=vb]
Sub loc()
Dim rg As Range
Sheet3.Range("B4:H1000").ClearContents
Set rg = Sheet2.Range("A4:H44")
rg.AdvancedFilter 2, Sheet1.Range("C45"), [B4]
End Sub
[/GPECODE]
Em cảm ơn anh nhiều nhiều, nhưng sao em copy đoạn mã trên vào mà vẫn k chạy
Có đoạn này của anh:Bạn phải dán đoạn Code trên vào sheet 3
anh ơi em ý còn ít tuổi hơn em cơ màCó đoạn này của anh:
Sheet3.Range("B4:H1000").ClearContents
Nó clear hết tiêu đề đi thì sao filter được nhỉ.
Em sửa lại chút.
[GPECODE=vb]Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C55]) Is Nothing Then
Dim rg As Range
Set rg = Sheet2.Range("C4:H41")
rg.AdvancedFilter 2, [C45], Sheet3.[C4:H4]
End If
End Sub[/GPECODE]
Chọn tiêu chí cần lọc, kết quả có ở sheet3
Có đoạn này của anh:
Sheet3.Range("B4:H1000").ClearContents
Nó clear hết tiêu đề đi thì sao filter được nhỉ.
Anh khuongvietphong cho em hỏi chút, em thực hiện ghi macro xong đó e chay lại báo lỗi như này là lỗi gì à, nhờ anh chỉnh giúp em, Thanks anh![GPECODE=vb]
Sub loc()
Dim rg As Range
Sheet3.Range("B4:H1000").ClearContents
Set rg = Sheet2.Range("A4:H44")
rg.AdvancedFilter 2, Sheet1.Range("C45"), [B4]
End Sub
[/GPECODE]