我想获取工作表上的一组数据并删除其中一列包含特定文本的所有行。
最初,我以为我只能使用自动筛选,但这种方法的限制是只能排除两个条件。所以我的下一个想法是将数据放在一个数组中,然后循环遍历该列上的每一行,如果它不包含这些短语,则将其放在另一个数组中,我将使用该数组粘贴到工作表中。
以下是我迄今为止整理的相关代码。
If (leaderShtArr(i) = vpPopulationSht) Then
leaderShtLC = leaderShtArr(i).Cells(1, Columns.Count).End(xlToLeft).Column
leaderShtLR = eaDBWorkersSht.Cells.Find(what:="*", After:=Range("A1"), LookAt:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row
'Reorder clicked campaign names to Calendar Order
Dim initialArr, filteredArr As Variant
initialArr = vzReporterDataSht.Range("A2:" & ColLett(leaderShtLC) & newLR).Value2
For x = 1 To UBound(initialArr)
If (initialArr(x, jobTitleCurrShtCN) <> "*EVP*" AND initialArr(x, jobTitleCurrShtCN) <> "*SVP*" AND initialArr(x, jobTitleCurrShtCN) <> "*AVP*") Then
'WHAT GOES HERE?
End If
Next x
'Paste data back into the range.
leaderShtArr(i).Cells.Clear
leaderShtArr(i).Range(ColLett(campaignsReportedCN) & "2").Resize(UBound(filteredArr), 1).Value2 = filteredArr
End If
以下是我的问题:
- 我是否正确地处理了这个问题,以实现最高速度和效率?如果没有,我应该怎么做?
- 该
If
语句对于在该列中查找“不包含”这些短语的单元格是否正确?
编辑:这个问题被认定为与这个问题类似。它之所以类似,是因为那是我提到的我尝试过的方法,但由于“不包含”条件的限制而无法实现。我真的很想找到一种通过数组来实现它的方法。我现在大部分时间都花在谷歌表格上,加载到数组,对数组进行操作然后粘贴是一种首选方法。我真的很想知道如何在 VBA 中做到这一点。如果它不可接受或不可取,我明白。
一种方法是重用初始数组,但将行“随机排列”到任何已删除的行中。例如