Nhờ các cao thủ viết giúp em VBA lọc dữ liệu (1 người xem)

  • Thread starter Thread starter Chian91
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Chian91

Thành viên chính thức
Tham gia
19/9/15
Bài viết
57
Được thích
3
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!
 

File đính kèm

[GPECODE=vb]
Sub loc()
Dim rg As Range
Sheet3.Range("B4:H1000").ClearContents
Set rg = Sheet2.Range("A4:H44")
rg.AdvancedFilter 2, Sheet1.Range("C4:D5"), [B4]
End Sub
[/GPECODE]
 
Upvote 0
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!
mình mới học viết nên k biết thế nào? hi vọng giúp đc bạn :)
 

File đính kèm

Upvote 0
Upvote 0
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!
Bạn tham khảo:
PHP:
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
 
Lần chỉnh sửa cuối:
Upvote 0
khuongvietphong ơi giải thích giúp chị dòng này với

thấy hay mà chả hiểu đc :) Thanks e nhiều
Chị 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("C4:D5") : 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 !
 
Lần chỉnh sửa cuối:
Upvote 0
khuongvietphong ơi giải thích giúp chị dòng này với
rg.AdvancedFilter 2, Sheet1.Range("C4:D5"), [B4]
thấy hay mà chả hiểu đc :) Thanks e 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("C4:D5") 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:
Advanced Filter.png
- Số 2 tương ứng với tùy chọn Copy to another location
- rg chính là List range
- Sheet1.Range("C4:D5") chính là Criteria range
- [B4] là Copy to.
 
Upvote 0
Chị 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("C4:D5") : 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 !
Thì ra vậy, cảm ơn em nhé, c k nghĩ đến Advanced filter :)
 
Upvote 0
Đâ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("C4:D5") 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("C4:D5") chính là Criteria range
- [B4] là Copy to.
Cảm ơn anh Nghĩa Phúc nhiều ạ.
 
Upvote 0
Upvote 0
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 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é
 
Upvote 0
Bạn phải dán đoạn Code trên vào sheet 3
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. Copy code này vào sheet1 (Click phải chuột vào sheet1 -> chọn view code -> copy)

[GPECODE=vb]Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C5:D5]) Is Nothing Then
Dim rg As Range
Set rg = Sheet2.Range("C4:H41")
rg.AdvancedFilter 2, [C4:D5], Sheet3.[C4:H4]
End If
End Sub[/GPECODE]
Chọn tiêu chí cần lọc, kết quả có ở sheet3
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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, [C5:D5]) Is Nothing Then
Dim rg As Range
Set rg = Sheet2.Range("C4:H41")
rg.AdvancedFilter 2, [C4:D5], Sheet3.[C4:H4]
End If
End Sub[/GPECODE]
Chọn tiêu chí cần lọc, kết quả có ở sheet3
anh ơi em ý còn ít tuổi hơn em cơ mà :) nhỏ mà có võ anh ạ
 
Upvote 0
[GPECODE=vb]
Sub loc()
Dim rg As Range
Sheet3.Range("B4:H1000").ClearContents
Set rg = Sheet2.Range("A4:H44")
rg.AdvancedFilter 2, Sheet1.Range("C4:D5"), [B4]
End Sub
[/GPECODE]
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!
Sub Macro1()
'
' Macro1 Macro
'


'
ActiveSheet.Range("$B$8:$B$1000").RemoveDuplicates Columns:=1, Header:=xlYes

Selection.AutoFill Destination:=Range("B9:C1000"), Type:=xlFillDefault
Range("B9:C1000").Select
End Sub
 

File đính kèm

  • Untitled.jpg
    Untitled.jpg
    28.6 KB · Đọc: 12
Upvote 0
Web KT

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

Back
Top Bottom