从Excel中删除在列中具有不连续值的行

时间:2018-11-30 10:00:04

标签: excel vba

我的csv中有这样的列:

Id            Name                     Price
1          Level X discontinued          34
3          Level Y Dicontinued           64
7          Level Z                       94

我要检查“名称”列中的已终止还是已终止 如果是,请删除行,否则请什么都不做,所以我的最终结果将是:

Id            Name                     Price
7          Level Z                       94

1 个答案:

答案 0 :(得分:0)

一个解决方案可以通过以下设置运行以下Excel宏ExampleMacro。此代码将过滤第一个工作表[此处TotalList],将内容复制到第二个工作表[此处Filtered]

注意:请使用我使用的相同名称,或者如果您希望更改名称,请相应更改以下宏的代码。否则它将不起作用

Sub ExampleMacro()

Dim i As Integer
Dim j As Integer
Set ShMaster = ThisWorkbook.Sheets("TotalList")
Set ShSlave = ThisWorkbook.Sheets("Filtered")

'cleanup for next macro executions
ShSlave.UsedRange.Clear

'copying the headers
ShSlave.Range("A1").Value = ShMaster.Range("A1").Value
ShSlave.Range("B1").Value = ShMaster.Range("B1").Value
ShSlave.Range("C1").Value = ShMaster.Range("C1").Value

'searching what to keep
j = 2
For i = 2 To ShMaster.UsedRange.Rows.Count
    'MsgBox "value is " & InStr(1, (Range("B" & i).Value), "discontinued")
    If InStr(1, (ShMaster.Range("B" & i).Value), "discontinued") = 0 Then
        While ShSlave.Range("C" & j).Value <> ""
            j = j + 1
        Wend
        ShSlave.Range("A" & j).Value = ShMaster.Range("A" & i).Value
        ShSlave.Range("B" & j).Value = ShMaster.Range("B" & i).Value
        ShSlave.Range("C" & j).Value = ShMaster.Range("C" & i).Value
    End If
Next i
End Sub

希望这会有所帮助

祝你有美好的一天,
安东尼诺