vanvan9697
Thành viên chính thức


- Tham gia
- 11/5/12
- Bài viết
- 94
- Được thích
- 5
Bạn gộp điều kiện lại rồi dùng lệnh if với like.Em có 1 Data
View attachment 210555
Giờ em muốn trích lọc với phần điều kiện đồng thời cả hai cột A và B dạng "*" &A& "*", "*" &B& "*" và kết quả thỏa mãn theo điều kiện ạ !
"
View attachment 210556
Em rất mong anh (chị) giúp đỡ em ạ !.
Anh có thể giúp em đoạn code này được không ạ !Bạn gộp điều kiện lại rồi dùng lệnh if với like.
Em cảm ơn chị Ạ. ! chị có thể giúp em Bằng đoạn VBA được không ạ !Xem công thức file đính kèm nhé
Bạn xem nhé.Xem có đúng ý không.Em cảm ơn chị Ạ. ! chị có thể giúp em Bằng đoạn VBA được không ạ !
Sub tach()
Dim arr, arr1
Dim a As Long, lr As Long, i As Integer, j As Integer
Dim dk1, dk2 As String
With Sheets("Data")
lr = .Range("A" & Rows.Count).End(xlUp).Row
If lr < 2 Then Exit Sub
arr = .Range("A2:I" & lr).Value
ReDim arr1(1 To UBound(arr, 1), 1 To 9)
End With
With Sheets("trichloc")
dk1 = "*" & .Range("A2").Value & "*"
dk2 = "*" & .Range("b2").Value & "*"
For i = 1 To UBound(arr, 1)
If UCase(arr(i, 7)) Like UCase(dk1) And UCase(arr(i, 8)) Like UCase(dk2) Then
a = a + 1
For j = 1 To 9
arr1(a, j) = arr(i, j)
Next j
End If
Next i
lr = .Range("C" & Rows.Count).End(xlUp).Row
If lr > 3 Then .Range("C4:K" & lr).ClearContents
If a Then .Range("C4").Resize(a, 9).Value = arr1
End With
End Sub
Dạ của em nó là 1 mảng có nhiều lấy nhiều cặp A2-B2 xuống dưới nữa chứ không phải như vậy anh ạ !. Cái này mới giải quyết được A2 và B2 thay đổi thôi ạBạn xem nhé.Xem có đúng ý không.
Mã:Sub tach() Dim arr, arr1 Dim a As Long, lr As Long, i As Integer, j As Integer Dim dk1, dk2 As String With Sheets("Data") lr = .Range("A" & Rows.Count).End(xlUp).Row If lr < 2 Then Exit Sub arr = .Range("A2:I" & lr).Value ReDim arr1(1 To UBound(arr, 1), 1 To 9) End With With Sheets("trichloc") dk1 = "*" & .Range("A2").Value & "*" dk2 = "*" & .Range("b2").Value & "*" For i = 1 To UBound(arr, 1) If UCase(arr(i, 7)) Like UCase(dk1) And UCase(arr(i, 8)) Like UCase(dk2) Then a = a + 1 For j = 1 To 9 arr1(a, j) = arr(i, j) Next j End If Next i lr = .Range("C" & Rows.Count).End(xlUp).Row If lr > 3 Then .Range("C4:K" & lr).ClearContents If a Then .Range("C4").Resize(a, 9).Value = arr1 End With End Sub
Bạn dùng thử code này xem.Dạ của em nó là 1 mảng có nhiều lấy nhiều cặp A2-B2 xuống dưới nữa chứ không phải như vậy anh ạ !. Cái này mới giải quyết được A2 và B2 thay đổi thôi ạ
Dim a As Long, lr As Long, i As Integer, j As Integer
Dim dk As Long
With Sheets("Data")
lr = .Range("A" & Rows.Count).End(xlUp).Row
If lr < 2 Then Exit Sub
arr = .Range("A2:I" & lr).Value
ReDim arr1(1 To UBound(arr, 1), 1 To 9)
End With
With Sheets("trichloc")
lr = .Range("A" & Rows.Count).End(xlUp).Row
If lr < 2 Then Exit Sub
arr2 = .Range("A2:B" & lr).Value
For i = 1 To UBound(arr, 1)
dk = kiemtra(arr2, arr(i, 7), arr(i, 8))
If dk = 1 Then
a = a + 1
For j = 1 To 9
arr1(a, j) = arr(i, j)
Next j
End If
Next i
lr = .Range("C" & Rows.Count).End(xlUp).Row
If lr > 3 Then .Range("C4:K" & lr).ClearContents
If a Then .Range("C4").Resize(a, 9).Value = arr1
End With
End Sub
Function kiemtra(ByVal arr As Variant, ByVal dk1 As String, ByVal dk2 As String) As Long
Dim a As Long, i As Long
Dim dk As String
For i = 1 To UBound(arr, 1)
If UCase(dk1) Like UCase("*" & arr(i, 1) & "*") And UCase(dk2) Like UCase("*" & arr(i, 2) & "*") Then
kiemtra = 1
Exit For
End If
Next i
End Function
Dạ vâng em cảm ơn anh Ạ !Bạn dùng thử code này xem.
Mã:Dim a As Long, lr As Long, i As Integer, j As Integer Dim dk As Long With Sheets("Data") lr = .Range("A" & Rows.Count).End(xlUp).Row If lr < 2 Then Exit Sub arr = .Range("A2:I" & lr).Value ReDim arr1(1 To UBound(arr, 1), 1 To 9) End With With Sheets("trichloc") lr = .Range("A" & Rows.Count).End(xlUp).Row If lr < 2 Then Exit Sub arr2 = .Range("A2:B" & lr).Value For i = 1 To UBound(arr, 1) dk = kiemtra(arr2, arr(i, 7), arr(i, 8)) If dk = 1 Then a = a + 1 For j = 1 To 9 arr1(a, j) = arr(i, j) Next j End If Next i lr = .Range("C" & Rows.Count).End(xlUp).Row If lr > 3 Then .Range("C4:K" & lr).ClearContents If a Then .Range("C4").Resize(a, 9).Value = arr1 End With End Sub Function kiemtra(ByVal arr As Variant, ByVal dk1 As String, ByVal dk2 As String) As Long Dim a As Long, i As Long Dim dk As String For i = 1 To UBound(arr, 1) If UCase(dk1) Like UCase("*" & arr(i, 1) & "*") And UCase(dk2) Like UCase("*" & arr(i, 2) & "*") Then kiemtra = 1 Exit For End If Next i End Function