Option Explicit
Sub test()
Dim arr, mark, i, j, m, t
arr = Range("a7:d" & Cells(Rows.Count, "a").End(xlUp).Row).Value
mark = [a2:a4].Value '条件区
t = [d4].Value '匹配方式
For i = 1 To UBound(arr, 1)
For j = 1 To UBound(mark, 1)
If Len(mark(j, 1)) Then '空为true
If t = "精确" Then
If mark(j, 1) <> arr(i, j) Then Exit For
Else
If InStr(arr(i, j), mark(j, 1)) = 0 Then Exit For
End If
End If
Next
If j = UBound(mark, 1) + 1 Then
m = m + 1
For j = 1 To UBound(arr, 2)
arr(m, j) = arr(i, j)
Next
End If
Next
With [f7]
.Resize(UBound(arr, 1), UBound(arr, 2) + 1).ClearContents
.Resize(UBound(arr, 1)).NumberFormatLocal = "@"
If m > 0 Then .Resize(m, UBound(arr, 2)) = arr
End With
End Sub |