2016-08-23 40 views
0

我似乎无法拼凑VBA代码,如果某个单元格中存在某些字符串,它将删除一行。我可以轻松地做到这一点,但无法弄清楚如何包含多个字符串。一个Excel宏,如果某个单元格中存在某些值,它将删除行,然后连接?

我已经得到了最后一部分,这很容易,只是将连接公式应用到一个范围,但我已经尝试了很多事情来获得第一部分,没有任何工作。

以下是我一起入侵的内容,只有在某个特定字符串在“无”的情况下才会删除行。我还需要删除行犹如“小计”,“估计和‘空’是在细胞中。

With Sheets("Customer Copy") 
    Firstrow = .UsedRange.Cells(1).Row 
    Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row 
    For Lrow = Lastrow To Firstrow Step -1 
    With .Cells(Lrow, "B") 
    If Not IsError(.Value) Then 

       If .Value = "None" Then .EntireRow.Delete 

    End If 

     End With 

    Next Lrow 

End With 

    Worksheets("Customer Copy").Range("A1:A200").Formula = "=CONCATENATE(B1, D1, E1)" 

谢谢你的任何帮助!

+2

怎么样'如果.value的= “none” 或.value的= “小计” 或.value的= “估计” 或.value的= “空” 然后.EntireRow.Delete'? – Ralph

+0

您绝对正确,先生! :) 非常感谢。我也会尝试下面给出的建议。 –

回答

0

,我认为这会工作

If .Value = "None" or .Value = "Subtotal" or .Value = "Estimate" or .Value = "Empty" Then 
+0

你是对的!我感到很傻。谢谢你回答 –

0

我想你只需要添加的所有条件,如果像下面

If .Value = "None" Or .Value = "Subtotal" Or .Value = "Estimate" Or .Value = "Empty" Then .EntireRow.Delete 
+0

绝对正确,完美!不敢相信我以前没有想到这一点! –

2

或者,这是一个很好例如对于Select Case

Select Case Trim(LCase(.Value)) 
    Case "none", "subtotal", "estimate", "empty": .EntireRow.Delete 
End Select 
+0

*(+ 1)*我最喜欢你的解决方案,因为它也处理字符串之前或之后的不可见空白(这通常是麻烦的来源)和UPPER /小写比较。最后,你把所有的字符串整齐地结合在一起。像这样,OP可以容易地扩展他/她希望搜索的字符串。我唯一不喜欢的是':',因为它很容易堵塞代码并使其不易识别。但这只是我个人的口味/偏好。 – Ralph

相关问题