Я копирую текстовый файл в таблицу Excel "CleanerLog", сохраненную в переменной CleanerLog_ sh. Затем я использую другой лист с именем «Filter_Criteria» для ввода элементов, по которым я хочу выполнить фильтрацию, в массив Filter C () с использованием For l oop. Затем я использую этот массив, чтобы скопировать отфильтрованные данные на другой рабочий лист с именем «Выход C», сохраненный в переменной OutputC_ sh.
. Как только данные скопированы на новый лист, я хочу выполнить фильтрацию по последний столбец Я использую это, чтобы определить, что элементы в столбце 2 получили полный рецепт.
Вот код, который я использую в настоящее время:
Dim Filter_Criteria_sh As Worksheet
Dim CleanerLog_sh As Worksheet
Dim OutputC_sh As Worksheet
Set Filter_Criteria_sh = ThisWorkbook.Sheets("Filter_Criteria")
Set CleanerLog_sh = ThisWorkbook.Sheets("CleanerLog")
Set OutputC_sh = ThisWorkbook.Sheets("OutputC")
OutputC_sh.UsedRange.Clear
Dim Filter_C() As String
Dim n As Integer
n = Application.WorksheetFunction.CountA(Filter_Criteria_sh.Range("A:A")) - 2
ReDim Filter_C(n) As String
Dim i As Integer
For i = 0 To n
Filter_C(i) = Filter_Criteria_sh.Range("A" & i + 2)
Next i
CleanerLog_sh.AutoFilterMode = False
CleanerLog_sh.UsedRange.AutoFilter 1, Filter_C(), xlFilterValues
CleanerLog_sh.UsedRange.Copy OutputC_sh.Range("A3")
CleanerLog_sh.AutoFilterMode = False
OutputC_sh.Range("$A$4:$AA$30000").AutoFilter Field:=4, Criteria1:= _
"=Step 4 of 4 completed*", Operator:=xlAnd
Таблица в настоящее время выглядит так до фильтрации :
60_Text_36 | D2W22 | Brush 2 | Step 2 of 4 completed in Brush 2 Recipe
60_Text_38 | D2W22 | Brush 2 | Step 3 of 4 completed in Brush 2 Recipe
60_Text_32 | D2W21 | Brush 1 | Step 1 of 4 completed in Brush 1 Recipe
60_Text_35 | D2W21 | Brush 1 | Step 2 of 4 completed in Brush 1 Recipe
60_Text_38 | D2W21 | Brush 1 | Step 3 of 4 completed in Brush 1 Recipe
60_Text_39 | D2W22 | Brush 2 | Step 4 of 4 completed in Brush 2 Recipe
60_Text_40 | D2W21 | Brush 1 | Step 4 of 4 completed in Brush 1 Recipe
60_Text_42 | D2W21 | Brush 2 | Step 1 of 4 completed in Brush 2 Recipe
Мне нужно отфильтровать последний шаг последнего столбца (шаг 4 из 4), чтобы для каждого элемента в столбце 2 мы нашли конечный шаг для каждого Bru sh:
00:35.4 | 60_Text_39 | D2W22 | Brush 2 | Step 4 of 4 completed in Brush 2 Recipe
00:45.4 | 60_Text_40 | D2W21 | Brush 1 | Step 4 of 4 completed in Brush 1 Recipe
Моя проблема в том, что иногда данные, скопированные на лист «CleanerLog», имеют конечный шаг, который отличается, например, «Шаг 5 из 5» вместо «Шаг 4 из 4».
Как сделать критерии фильтра в следующем фрагменте кода переменной, которая будет искать последний шаг в рецепте?
OutputC_sh.Range("$A$4:$AA$30000").AutoFilter Field:=4, Criteria1:= _
"=Step 4 of 4 completed*", Operator:=xlAnd