я хочу скопировать вставить только цифры с одного листа на другой - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь скопировать и вставить только цифры / значения с одного листа на другой. Код, с которым я работаю, копирует все значения типа. буду признателен, если кто-то может изменить мой код

          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 голосов
/ 04 июля 2019

Если сохранение того же места вставки не важно, использование. union может быть эффективным способом для больших наборов данных.

То, что он делает, принимает все значения, которые numeric и затем вставляет их все после того, как это сделано с помощью цикла .

. При таком подходе проблема может заключаться в том, что он просто вставляет numeric значения по одномуза другим, независимо от того, где они находились в 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")
0 голосов
/ 04 июля 2019

Используйте следующий код:

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. Вы можете изменить его и для других столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...