Excel 保留多个字符串并删除其他数据

Excel 保留多个字符串并删除其他数据,excel,vba,Excel,Vba,我面临一个小问题,基本上我已经成功地完成了一个字符串的宏过程。但我无法处理同一vba宏以保留多个字符串并删除CSV文件中不需要的数据 当前,下面的代码仅保留字符串为事件大小:的行,并删除其余的行 但是,我想添加多个字符串,如事件持续时间:, 触发日期:,触发时间:在同一宏中,我不确定如何执行 如果我可以添加多个字符串,该宏将检查所有4个字符串,保留该数据并删除其余数据 Sub DeleteNotMIS() Dim r As Long, lr As Long lr = Cells(

我面临一个小问题,基本上我已经成功地完成了一个字符串的宏过程。但我无法处理同一vba宏以保留多个字符串并删除CSV文件中不需要的数据

当前,下面的代码仅保留字符串为
事件大小:
的行,并删除其余的行

但是,我想添加多个字符串,如
事件持续时间:

触发日期:
触发时间:
在同一宏中,我不确定如何执行

如果我可以添加多个字符串,该宏将检查所有4个字符串,保留该数据并删除其余数据

Sub DeleteNotMIS()
    Dim r As Long, lr As Long
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For r = lr To 2 Step -1
        If InStr(Cells(r, 1), "Event Magnitude: ") = 0 Then Rows(r).Delete
    Next r
 End Sub

您需要定义一个关键字列表来保留
关键字stokeep=Array(“事件大小:”,“触发日期:”)
,然后在另一个循环中检查每个关键字

Option Explicit

Public Sub DeleteNotMIS()
    Dim LastRow As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row

    Dim KeywordsToKeep() As Variant
    KeywordsToKeep = Array("Event Magnitude: ", "Trigger Date:")  'Add other keywords here

    Dim iRow As Long, eKey As Variant, FoundKey As Boolean
    For iRow = LastRow To 2 Step -1
        FoundKey = False 'initialize
        For Each eKey In KeywordsToKeep
            If InStr(Cells(iRow, 1), eKey) <> 0 Then 
                FoundKey = True
                Exit For 'we don't need to check further keys if we already found one.
            End If
        Next eKey
        If Not FoundKey Then Rows(iRow).Delete
    Next iRow 
End Sub
选项显式
公共子系统DeleteNotMIS()
最后一排一样长
LastRow=单元格(Rows.Count,1).End(xlUp).Row
Dim关键字stokeep()作为变量
keywordstokep=Array(“事件大小:”,“触发日期:”)在此处添加其他关键字
Dim iRow为Long,eKey为Variant,FoundKey为Boolean
对于iRow=LastRow到2步骤-1
FoundKey=False“初始化”
对于关键字StokeEP中的每个eKey
如果InStr(单元格(iRow,1),eKey)为0,则
FoundKey=True
退出“如果我们已经找到了一个密钥,则不需要再检查其他密钥。”。
如果结束
下一个eKey
如果未找到键,则为行(iRow)。删除
下一步
端接头
如果每个关键字在CSV文件中只能出现一次…

这种方法很慢,因为它必须逐行检查。更快的方法是使用直接查找每个关键字并将其提取/复制到新的工作表中。

如果您只想提取CSV的一些数据,我将使用正则表达式查看并将CSV作为文本文件处理,而不是将整个文件导入Excel。@pᴇʜ可以建议一个解决方案代码吗?或者,我如何为这段代码合并多个字符串?实际上,这对于这个问题来说太难了。但我在下面发布了一个扩展代码的解决方案。