Скопируйте одну таблицу на листе данных в другую таблицу на другом листе - PullRequest
0 голосов
/ 07 мая 2020

отказ от ответственности Я никогда раньше не использовал VBA ...

У меня есть следующее: Sheet1 содержит Table1 Sheet2 содержит Table2

Я хочу скопировать содержимое Table1 и вставьте его в Table2. Вы бы использовали метод копирования / вставки или ListRows.add?

Вот как я могу выбрать строки из Table1:

 ' Copy from src table
Set srcRows = srcSh.ListObjects("Table1")
srcRows.Parent.Activate
srcRows.AutoFilter.ShowAllData
srcRows.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy

Но тогда я не уверен, как я могу скопировать это в конце другой таблицы?

Другой способ, который я думаю для выбора данных, - это сохранить содержимое строк в переменной и затем добавить его в целевую таблицу (но как?)

from = srcRows.DataBodyRange.Value

Я видел функцию добавления https://docs.microsoft.com/en-us/office/vba/api/excel.listrows.add#example, но не уверен, как применить к ней этот выбор.

Наконец, еще одна упрощенная версия, которую я пробовал с демонстрацией, начиная с следующее: enter image description here

Моя цель - скопировать строки из второй таблицы, чтобы добавить их в первую.

Итак, я попробовал следующий макрос:

    Set tbl1 = ActiveSheet.ListObjects("Table3")
    Set tbl2 = ActiveSheet.ListObjects("Table2")

  For x = 2 To tbl2.Range.Rows.Count
        tbl1.ListRows.Add.Range() = tbl2.Range.Rows(x).Value
  Next x

, что даст следующий результат: enter image description here

Это почти готово, но как я могу заставить его «вставить» значения при запуске столбец foo?

Любая помощь будет принята с благодарностью :)

Спасибо

1 Ответ

0 голосов
/ 07 мая 2020

На всякий случай, если у кого-то есть такая же проблема, вот как я решил ее с помощью VBA:

Sub MacroYeah()

Dim ws As Worksheet
Dim Source, Destination As ListObject
Dim r As Range
Dim index As Long

    Set ws = ActiveSheet
    Set Source = ActiveSheet.ListObjects("Table2")
    Set Destination = ActiveSheet.ListObjects("Table3")

    Source.Parent.Activate
    Source.AutoFilter.ShowAllData
    Source.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy

    Set r = Destination.Range()
    r.Activate

    index = r.Rows.Count
    ActiveCell.Offset(index, 1).Select
    ActiveCell.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub

Он скопирует содержимое второй таблицы в конец первой таблицы при смещении 1 строки .

До: enter image description here

После: enter image description here

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