Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 粘贴特殊,仅粘贴Formal中的值_Excel_Excel Formula_Vba - Fatal编程技术网

Excel 粘贴特殊,仅粘贴Formal中的值

Excel 粘贴特殊,仅粘贴Formal中的值,excel,excel-formula,vba,Excel,Excel Formula,Vba,我有两个工作表,在一个工作表中,我在一列中寻找一个特定的文本,如果存在,那么它应该复制所有带有特定文本的行,并将它们粘贴到另一个工作表中。这对我来说是可行的,但问题是,当我想粘贴特殊值时,只粘贴值,而不粘贴我不工作的公式 这是代码,你知道怎么做吗 With Sheets(1) LR = .Range("A" & Rows.Count).End(xlUp).Row For i = 1 To LR If .Range("A" & i).Value =

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

这是代码,你知道怎么做吗

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

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

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

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

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

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

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

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