2016-11-04 76 views
0

我有一个包含超过30,000个条目的表。我感兴趣的行d和行F.他们有值的3人组合基于行d和F行基于两行的条件替换值VBA

A   B  C   D   E  F 
10/11/2016 501 General  2   1  1795 to 2395 
10/11/2016 502 Public 1 to 2  1  675 to 750 
10/11/2016 503 Public 1 to 3  1  1450 

预期结果

A    B  C   D   E  F 
10/11/2016 501 General  2   1  1795 to 2395 
10/11/2016 502 Public 1 to 2  1  675 to 750 
10/11/2016 503 Public  1   1  1450 

我想实现的是: 替换“以和任何之后” [列d]时,有没有‘到’(范围)列F]

我都试过,但没有得到期望的结果代码:

Sub RemoveAfterTo() 


    Last = Cells(Rows.Count, "D").End(xlUp).Row 

For i = Last To 1 Step -1 
    If (Cells(i, "D").Value) Like "*to*" And (Cells(i, "F").Value) <> "*to*" 
    Then 

     Cells(i, "D").Replace What:="to*", Replacement:="", LookAt:=xlPart 

    End If 

    Next i 

End Sub 

任何帮助表示赞赏。 在此先感谢。

回答

1

<>不能与通配符一起使用。由条件Not (Cells(i, "F").Value Like "*to*")

更换条件(Cells(i, "F").Value) <> "*to*"

这个收益率(固定错位的Then和声明变量按照良好实践后):

Sub RemoveAfterTo() 
    Dim Last As Long, i As Long 

    Last = Cells(Rows.Count, "D").End(xlUp).Row 

    For i = Last To 1 Step -1 
     If (Cells(i, "D").Value) Like "*to*" And Not (Cells(i, "F").Value Like "*to*") Then 
      Cells(i, "D").Replace What:="to*", Replacement:="", LookAt:=xlPart 
     End If 
    Next i 
End Sub 

按照预期与样品数据,工作。

+0

It Works!感谢您纠正并说明<>如何处理通配符。 :) – Chid