Excel VBA如果cell.Value ="单词1"然后

时间:2018-02-22 02:16:31

标签: excel excel-vba vba

如果单元格=&#34,则尝试仅保留值中不是公式的值;是" 这是我的代码:

Sub Fixed()
Dim cell As Range
For Each cell In Range("Q4799:Q4825")
On Error Resume Next
If cell.Value = "Yes" Then

cell.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
     :=False, Transpose:=False
ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Save

End If
Next cell

End Sub

我为目前正在使用的公式运行它们:

=INDEX(Copy!B:B,MATCH(Manifest!A4800,Copy!A:A,0))

看起来like this 但是,无论该单元格值是什么,它似乎都在执行操作。因此,它目前正在为Q4799:Q4825中的每个细胞做一些事情,即使它不是"是"。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

重写为,

Sub Fixed()

    Dim cell As Range

    On Error Resume Next

    For Each cell In Range("Q4799:Q4825")
        If cell.Value = "Yes" Then
            cell.Value = cell.Value
        End If
    Next cell

    ActiveWorkbook.Save

End Sub

替代从公式返回的所有基于文本(非数字,非布尔,非错误)的值。

Sub Fixed()

    with Range("Q4799:Q4825").specialcells(xlCellTypeFormulas, xlTextValues)
        .Value = .Value
    end with

    ActiveWorkbook.Save

End Sub