我只想将一张纸上的数字粘贴到另一张纸上

时间:2019-07-04 04:39:10

标签: vba

我正在尝试仅将数字/值从一张纸复制并粘贴到另一张纸。我正在使用的代码复制所有类型值。如果有人可以修改我的代码,我将不胜感激

          Set wb = ThisWorkbook
          Set src = wb.Sheets("sheet1")
          Set tgt = wb.Sheets("sheet2")

              With src

           Lastrow = .Range("A" & .Rows.Count).End(xlUp).Row
           With .Range("A8:A" & Lastrow)

             tgt.Range("A8").Resize(.Rows.Count, .Columns.Count) = .Value2


              End With
End With

2 个答案:

答案 0 :(得分:0)

使用以下代码:

Set wb = ThisWorkbook
Set src = wb.Sheets("sheet1")
Set tgt = wb.Sheets("sheet2")

Dim lastrow As Integer
Dim i As Integer

lastrow = src.Range("A" & src.Rows.Count).End(xlUp).Row

   For i = 8 To lastrow

        If IsNumeric(src.Range("A" & i).Value) Then

            tgt.Range("A" & i).Value = src.Range("A" & i).Value

        End If

   Next

将仅复制A列中的值。您也可以将其修改为其他列。

答案 1 :(得分:0)

如果保留相同的粘贴位置并不重要,则使用。union可能是获取较大数据集的有效方法。

它的作用是,它使用所有数字值,然后在通过 loop 完成后将它们全部粘贴。

这种方法的问题可能是,它只是将数字值一个接一个地粘贴,无论它们在 Sheet1 中的位置如何。

Set wb = ThisWorkbook
    Dim combine As Range
              Set src = wb.Sheets("sheet1")
              Set tgt = wb.Sheets("sheet2")

                  With src

                Lastrow = .Range("A" & .Rows.Count).End(xlUp).Row

               For i = 8 To Lastrow
               If IsNumeric(Range("A" & i)) Then
                If combine Is Nothing Then
                Set combine = Range("A" & i)
            Else
                Set combine = Union(combine, Range("A" & i))
                End If
            End If
            Next i

               End With

      combine.Copy Destination:=Sheets(2).Range("A8")