Я новичок в vbscript, и я создаю скрипт, чтобы уменьшить мои ежедневные дублирующие усилия. У меня есть столбец в листе Excel, который содержит значения. В этом столбце есть определенные ячейки, в которых существует несколько значений. Теперь у меня есть массив, в котором есть некоторые значения, которые нужно искать / искать в каждой строке под этим столбцом, и удаляю строку, если значения массива отсутствуют в строке.
Я пытался искать значения массива в строках, используя функцию InStr, и это работало, если ячейка содержит только одно значение. Код прилагается ниже.
Эта подпрограмма не работает должным образом, если ячейка содержит несколько значений. например Проект 1 [ALT + ENTER] Пустой проект
Поэтому я попытался использовать методы поиска и поиска. Я не могу получить ожидаемые результаты, используя эти методы тоже.
Fix Version/s
Row 1 - Project 3 a
Row 2 - Project 2 'spaces at the end
Row 3 - Project 4
---------
Project 1
Row 4 - Project 5
Row 5 - Project 1
Метод поиска - строки не удалены
Метод замены - Получение синтаксической ошибки, когда я использовал метод поиска вместо функции InStr, как показано ниже,
If objWorksheet1.Cells(iDelCnt, fixVerColNum).Search(objWorksheet1.Cells(iDelCnt, fixVerColNum).Value, projectFilter(jDelCnt)) <> 0 Then
Пожалуйста, помогите. Заранее спасибо.
Ожидается - я ожидаю, что строка 'x' будет удалена, если значение массива не существует в ячейках (x, y)
Dim objExcel, objWorkbook, objWorksheet1
Dim iDelCnt, jDelCnt, projectFilter, lRow, fixVerColNum, tempCell, deleteCounter, InStrTest
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Visible = True
Set objWorkbook = objExcel.Workbooks.Open(filePath) ' Location of the file on drive
Set objWorksheet1 = objWorkbook.Worksheets(1)
projectFilter = Array("Project 1","Project 2", "Project 3")
fixVerColNum = objExcel.Match("Fix Version/s", objWorksheet1.Range("A1:T1"), 0) 'Identify "Fix Version(s)" column number
lRow = objWorksheet1.Range("A1").CurrentRegion.Rows.Count
deleteCounter = 0
For iDelCnt = lRow to 2 Step -1
For jDelCnt = LBound(projectFilter) to UBound(projectFilter)
If InStr(1, objWorksheet1.Cells(iDelCnt, fixVerColNum).Value, projectFilter(jDelCnt), 1) <> 0 Then
deleteCounter = 1
Exit For
Else
deleteCounter = 0
End If
Next
If deleteCounter = 0 Then
objWorksheet1.Rows(iDelCnt).EntireRow.Delete
End If
Next