Pastespecial,仅粘贴来自formual的值

时间:2016-03-01 10:21:35

标签: excel excel-vba excel-formula vba

我有两张纸,在一张纸上我在列中查找特定文本,如果存在则应该复制具有特定文本的所有行并将其粘贴到另一张纸中。这对我有用,但问题是,当我想要粘贴时,只粘贴值而不是公式我不能正常工作。

以下是代码,知道该怎么做?

With Sheets(1)
    LR = .Range("A" & Rows.Count).End(xlUp).Row
    For i = 1 To LR
        If .Range("A" & i).Value = "Orange" Then .Rows(i).Copy
        Sheets(2).Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial _
        Paste:=xlPasteValues

    Next i

End With

2 个答案:

答案 0 :(得分:2)

您的代码中存在逻辑错误,我在评论中遗漏了这个错误。你需要If块中的PasteSpecial

With Sheets(1)
    LR = .Range("A" & Rows.Count).End(xlUp).Row
    For i = 1 To LR
        If .Range("A" & i).Value = "Orange" Then
          .Rows(i).Copy
           Sheets(2).Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial _
        Paste:=xlPasteValues
        End If

    Next i

End With

答案 1 :(得分:0)

虽然Rory的答案应该完全适合你的问题,你可以使用变量来大幅加快它的复制范围......

Dim rng As Range
With Sheets(1)
  LR = .Range("A" & Rows.Count).End(xlUp).Row
  For i = 1 To LR
    If .Range("A" & i).Value = "Orange" Then
      If rng Is Nothing Then
        Set rng = .Rows(i)
      Else
        Set rng = Union(rng, .Rows(i))
      End If
    End If
  Next
  rng.EntireRow.Copy
  Sheets(2).Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
End With

通过电话撰写。可能包含错误。