Lọc có điều kiện VBA

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Dongka_81

Cứ làm đi !
Tham gia
28/11/23
Bài viết
14
Được thích
4
Giới tính
Nam
Chả là em muốn lọc dữ liệu từ Data qua Locdulieu với 2 điều kiện ở C1&C2 mà làm hoài không được
Làm chung 1 sheet thì làm ok rồi nhưng qua 1 sheet khác lỗi hoài
Nhờ các cao nhân giúp đỡ với ạ
Cảm ơn nhiều ạ
 

File đính kèm

  • Loc du lieu.xlsm
    17.9 KB · Đọc: 7
Bạn đang bị lỗi phần 'Tiêu đề'; Nếu được sửa lại đi bạn
 
Có cháy nhà đâu mà phải la làng vậy?

Tiêu đề thế này là phạm quy diễn đàn

1701156947973.png
 
Xài đỡ cái này.
Lưu ý: bạn không yêu cầu nhưng có lẽ bạn sẽ cần: 2 ô C1 và C2 có thể để trống. Nếu trống nghĩa là chọn tất cả.

Mã:
Option Explicit
Sub locdulieu()
Dim lr&, i&, k&, rng, res(1 To 10000, 1 To 5), dk1 As String, dk2 As String
With Sheets("Data")
    lr = .Cells(Rows.Count, "B").End(xlUp).Row
    rng = .Range("B3:E" & lr).Value
End With
Sheets("Locdulieu").Activate
dk1 = IIf(Range("C1").Value = "", "*", Range("C1").Value)
dk2 = IIf(Range("C2").Value = "", "*", Range("C2").Value)
For i = 1 To UBound(rng)
    If rng(i, 2) Like dk1 And rng(i, 3) Like dk2 Then
        k = k + 1: res(k, 1) = k: res(k, 2) = rng(i, 1)
        res(k, 3) = rng(i, 2): res(k, 4) = rng(i, 3): res(k, 5) = rng(i, 4)
    End If
Next
Range("A4:E10000").ClearContents
Range("A4").Resize(k, 5).Value = res
End Sub
 

File đính kèm

  • Loc du lieu.xlsm
    20.1 KB · Đọc: 12
Xài đỡ cái này.
Lưu ý: bạn không yêu cầu nhưng có lẽ bạn sẽ cần: 2 ô C1 và C2 có thể để trống. Nếu trống nghĩa là chọn tất cả.

Mã:
Option Explicit
Sub locdulieu()
Dim lr&, i&, k&, rng, res(1 To 10000, 1 To 5), dk1 As String, dk2 As String
With Sheets("Data")
    lr = .Cells(Rows.Count, "B").End(xlUp).Row
    rng = .Range("B3:E" & lr).Value
End With
Sheets("Locdulieu").Activate
dk1 = IIf(Range("C1").Value = "", "*", Range("C1").Value)
dk2 = IIf(Range("C2").Value = "", "*", Range("C2").Value)
For i = 1 To UBound(rng)
    If rng(i, 2) Like dk1 And rng(i, 3) Like dk2 Then
        k = k + 1: res(k, 1) = k: res(k, 2) = rng(i, 1)
        res(k, 3) = rng(i, 2): res(k, 4) = rng(i, 3): res(k, 5) = rng(i, 4)
    End If
Next
Range("A4:E10000").ClearContents
Range("A4").Resize(k, 5).Value = res
End Sub
Đúng ý mình luôn rồi
Tks bạn nhiều nhiều !
 
Web KT
Back
Top Bottom