Скопируйте и вставьте выбранные столбцы динамических данных с одного листа на другой лист - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу скопировать данные из определенного столбца на листе 1 в определенный столбец на листе 2. Существует 20 таких столбцов, и отображение поддерживается в такой таблице, как

enter image description here

Я написал код для имени столбца поиска (исходный и целевой листы) из, но не могу скопировать данные из исходного столбца (динамический диапазон) в целевой столбец.

 Sub search_validate()

    Dim j As Integer

    Dim sourcSearch, destSearch As String
    Dim sCell, dCell As Range

    For j = 3 To 20

        sourcSearch = Sheet6.Range("Z" & j).Value ' pickup selected source column name 
        destSearch = Sheet6.Range("AA" & j).Value ' pickup selected destination column name 

        Set sCell = Sheet1.Rows(2).Find(What:=sourcSearch, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

        Set dCell = Sheet2.Rows(2).Find(What:=destSearch, LookIn:=xlValues, _
          LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
          MatchCase:=False, SearchFormat:=False)

    '  sCell.Address or sCell.Column to get source column header address but data starts after this column. dynamic range

    '  dCell.Address or dCell.Column to get destination column header address. no data in destination column except header.

    Next j

End Sub

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Это должно добавить данные в конец столбца назначения

    If Not sCell Is Nothing And Not dCell Is Nothing Then
        Dim Source As Range, Target As Range
        Set Source = Intersect(Sheet1.UsedRange, sCell.EntireColumn).Offset(1)
        Set Target = Sheet2.Cells(Sheet2.Rows.Count, dCell.Column).End(xlUp).Offset(1)
        Source.Copy Destination:=Target
    End If
0 голосов
/ 29 ноября 2018

Вам нужно вставить новые данные после последней строки в вашей текущей таблице?Вы можете найти последнюю строку с этим:

lastRow = Columns("Enter your column number here").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

Затем просто сделайте копию-вставку, как это:

Set copyRange = Range(YOUR RANGE HERE)
 copyRange.Copy
Cells(lastRow + 1, "Enter your column number here").PasteSpecial Paste:=xlPasteValues
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...