如何通过比较同一excel的另一个单元格中的值来删除excel单元格中的字符串

时间:2016-02-22 11:34:24

标签: excel-vba vba excel

我尝试过的场景:

This is the look and feel of my macro project

从上图中,Range(F4)字符串值为" GREEN"然后我不想在范围范围(G4)中看到下周的动作,因为我使用了下面的剧本,但是由于我无法看到角色被删除而失败了。

If ThisWorkbook.Sheets("FortnightlyWSR").Cells(I, 6).Value = "GREEN" Then
    ThisWorkbook.Sheets("FortnightlyWSR").Range("G4").Characters(WorksheetFunction.Find("Action Plan for next Week:", ThisWorkbook.Sheets("FortnightlyWSR").Range("G4").Value, 1), Len("Action Plan for next Week:")).Delete

2 个答案:

答案 0 :(得分:0)

我认为您的代码没有太大问题,但对WorksheetFunction对象的FIND function的调用当然可以替换为VBA的原生InStr function。一些用于保持弦乐和起始位置的vars简化了事情。 With ... End With statement将父工作表引用带到单个本地化位置。

Dim sp As Long, ln As Long, i As Long, str As String

i = 4
str = "Action Plan for next Week:" & Chr(10)
With ThisWorkbook.Sheets("FortnightlyWSR")
    If UCase(.Cells(i, 6).Value2) = "GREEN" Then
        sp = InStr(1, .Range("G4").Value, str, vbTextCompare)
        .Range("G4").Characters(Start:=sp, Length:=Len(str)).Delete
    End If
End With

我在字符串的尾端添加了换行符,这样就不会留下空白行。

FIND function执行区分大小写搜索; SEARCH function的子字符串位置区分大小写。

答案 1 :(得分:0)

您发布的代码将从G4单元格中删除字符串“下周的行动计划:”,并保留剩余的字符串。

经测试的代码 - 将I替换为4以匹配F4

If ThisWorkbook.Sheets("FortnightlyWSR").Cells(I, 6).Value = "GREEN" Then
        ThisWorkbook.Sheets("FortnightlyWSR").Range("G4").Characters(WorksheetFunction.Find("Action Plan for next Week:", ThisWorkbook.Sheets("FortnightlyWSR").Range("G4").Value, 1), Len("Action Plan for next Week:")).Delete
End If

但是如果你想删除它下面的任何值(来自图像打印解决方案..,测试策略..启用测试场景..)那么你可以使用下面的代码

I = 4
If ThisWorkbook.Sheets("FortnightlyWSR").Cells(I, 6).Value = "GREEN" Then
    ThisWorkbook.Sheets("FortnightlyWSR").Range("G4").Characters(WorksheetFunction.Find("Action Plan for next Week:", ThisWorkbook.Sheets("FortnightlyWSR").Range("G4").Value, 1)).Delete
End If