Quantcast
Channel: Active questions tagged excel - Stack Overflow
Viewing all articles
Browse latest Browse all 88257

VBA - Multi wildcard filter using array values

$
0
0

Hello VBA Developers,

I am having a hard time solving a multi-wildcard filter for criteria(s) listed in an array. The code stops at "vTst = Doc_ID_Arr(i)", stating vTst = Empty. However, checking Doc_ID_Arr is not empty if you check the debugger.

Sub doc_id()
'Segment 1 ----
'Get the worksheet called "LOB Docs"
Dim sh_1 As Worksheet
Set sh_1 = ThisWorkbook.Worksheets("LOB Docs")

' Declare an array to hold all LOB Doc ID numbers
Dim Doc_ID_Arr As Variant
Dim Doc_ID_Value As String
Dim j As Long
Dim i As Long

With sh_1
lastrow_Header_Config = sh_1.Cells(Rows.count, "A").End(xlUp).Row
' Read LOB DOC ID's from Column Cell A2 to last value in Column A
ReDim Doc_ID_Arr(Application.WorksheetFunction.CountA(sh_1.Range("A2:A"& lastrow_Header_Config)) - 1) As Variant
j = 0
For i = 2 To lastrow_Header_Config
    Doc_ID_Value = sh_1.Range("A"& i).Value
    If Doc_ID_Value <> "" Then
    Doc_ID_Arr(j) = "*"& Doc_ID_Value & "*"
    j = j + 1
    End If
    Next
   End With
'' Debug.Print "Doc_ID_Value"'    For i = LBound(Doc_ID_Arr) To UBound(Doc_ID_Arr)
'        Debug.Print Doc_ID_Arr(i)
'    Next i




'Segment 2 ----
   Dim sh_2 As Worksheet 'Data Sheet
   Dim sh_3 As Worksheet 'Output Sheet
   Set sh_2 = ThisWorkbook.Worksheets("GDL db") 'Data Sheet
   Set sh_3 = ThisWorkbook.Worksheets("Seed Template Output")

   Dim Dic As Object
   Dim eleData As Variant
   Dim eleCrit As Variant
   Dim ArrData As Variant
   Dim vTst As Variant

   Set Dic = CreateObject("Scripting.Dictionary")

   Dim x As Long

   For x = LBound(Doc_ID_Arr) To UBound(Doc_ID_Arr)
       vTst = Doc_ID_Arr(i)
   Next x

   With sh_2
   .AutoFilterMode = False
   ArrData = .Range("A1:A"& .Cells(.Rows.count, "A").End(xlUp).Row)
   For Each eleCrit In vTst
        For Each eleData In ArrData
            If eleData Like eleCrit Then _
            Dic(eleData) = vbNullString
        Next
   Next
    .Columns("A:A").AutoFilter Field:=1, Criteria1:=Dic.Keys, Operator:=xlFilterValues
   sh_2.UsedRange.Copy sh_3.Range("A1")
   End With


End Sub

I am trying to filter sh_2, Column A for each value(individual) or all values(en masse) that is placed in the Doc_ID_Arr created in Segment 1. The target is to place each filter output for each ID onto sh_3, without overwriting previous placed values/rows.


Viewing all articles
Browse latest Browse all 88257

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>