【问题标题】:Pastespecial, paste only values from formualPastespecial,仅粘贴公式中的值
【发布时间】:2016-03-01 19:33:25
【问题描述】:

我有 2 张纸,在一张纸中我正在寻找列中的特定文本,如果存在,那么它应该复制所有带有特定文本的行并将它们粘贴到另一张纸中。这对我有用,但问题是当我想粘贴特殊时,只粘贴值而不是我不工作的公式。

这是代码,知道该怎么做吗?

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

【问题讨论】:

  • 在什么意义上不起作用?该代码看起来是正确的。
  • 它给出的错误是“范围类的pastespecial方法失败”

标签: excel excel-formula vba


【解决方案1】:

您的代码中有一个逻辑错误,我在评论中遗漏了该错误。您需要在 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

【讨论】:

    【解决方案2】:

    虽然 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
    

    电话写的。可能包含错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多