如何只使用VBA复制值

我只需要将没有公式的值复制到另一个。 下面的代码将复制,但只有公式。 我尝试了一些解决scheme,但他们给我错误。

For i = 2 To LastRow 'sheet to copy from With Worksheets("Hoist") 'check column H value before copying If .Cells(i, 8).Value >= -90 _ And CStr(.Cells(i, 9).Value) <> "Approved" _ And CStr(.Cells(i, 9).Value) <> "" _ And CStr(.Cells(i, 10).Value) = "" Then 'copy row to "display" sheet .Rows(i).Copy Destination:=Worksheets("display").Range("A" & j) j = j + 1 End If End With Next i 

尝试改变这一行:

 .Rows(i).Copy Destination:=Worksheets("display").Range("A" & j) 

对此:

 .Rows(i).Copy Worksheets("display").Range("A" & j).PasteSpecial xlPasteValues 

但是,这将删除所有格式。 要包含格式,您需要添加另一行,如:

 Worksheets("display").Range("A" & j).PasteSpecial xlPasteFormats 

另一种select是input一个工作列并使用AutoFilter来避免循环

  • 在列A中插入一列
  • 工作列formuka =AND(I2>-90,AND(J2<>"",J2<>"Approved"),K2="")
  • 筛选并复制TRUE
  • 删除工作栏A

 Sub Recut() Dim ws As Worksheet Dim rng1 As Range Set ws = Sheets("Hoist") ws.AutoFilterMode = False Set rng1 = Range([h2], Cells(Rows.Count, "H").End(xlUp)) ws.Columns(1).Columns.Insert rng1.Offset(0, -8).FormulaR1C1 = "=AND(RC[8]>-90,AND(RC[9]<>"""",RC[9]<>""Approved""),RC[10]="""")" With rng1.Offset(-1, -8).Resize(rng1.Rows.Count + 1, 1).EntireRow .AutoFilter Field:=1, Criteria1:="TRUE" .Copy Sheets("display").Range("A1") Sheets("display").Columns("A").Delete End With ws.Columns(1).Delete ws.AutoFilterMode = False End Sub