Как проверить, существует ли значение массива в ячейке? - PullRequest
0 голосов
/ 28 апреля 2019

Я новичок в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...