Скопируйте диапазон ячеек из одного листа в другой, используя VBA - PullRequest
0 голосов
/ 05 марта 2020

Я новичок в использовании VBA и мне нужно скопировать данные из диапазона ячеек на одном листе в другой лист. Мне нужно скопировать столбец ячеек и вставить его в ряд ячеек, например, от A1: A4 до A1: D1. Это код, который я использую, но он не работает так, как он мне нужен.

Sub Draft()

Worksheets("Material Check").Range("B3:B6").Copy _
Destination:=Worksheets("Archive").Range("A2:D2")

End Sub

Также мне нужно скопировать данные, которые будут скопированы, в нижней части таблицы на архивные листы, и я не уверен, как это сделать.

1 Ответ

0 голосов
/ 05 марта 2020

Без таблиц Excel

Это немного странный способ сделать это, но если у вас много ячеек, возможно, это быстрее, чем специальное копирование / вставка:

ThisWorkbook.Worksheets("Archive").Range("A2:D2").Formula = "=INDEX('Material Check'!$B$3:$B$6,Column())"
ThisWorkbook.Worksheets("Archive").Range("A2:D2").Value = ThisWorkbook.Worksheets("Archive").Range("A2:D2").Value

Первая строка заполняет целевой диапазон формулой, которая извлекает данные из источника, используя INDEX / COLUMN для транспонирования результата.

Вторая строка просто преобразует формулу в сложную. значения.

РЕДАКТИРОВАТЬ - Решение для копирования значений в конец списка
Использование таблицы Excel

Для этого вам понадобится нужно go «Вставить» -> «Таблица».

''Get a reference to your destination table
Dim Tbl1 As ListObject
Set Tbl1 = ThisWorkbook.Sheets("Archive").ListObjects("Table1") ''Change these to your destination sheet/table names

''add a new row to the table
Dim Newrow As ListRow
Set Newrow = Tbl1.ListRows.Add

''populate the new row
With Newrow
    .Range(Tbl1.ListColumns("Column1").Index) = ThisWorkbook.Worksheets("Material Check").Range("B3") ''change these to your destination column name and your source sheet/ranges
    .Range(Tbl1.ListColumns("Column2").Index) = ThisWorkbook.Worksheets("Material Check").Range("B4")
    .Range(Tbl1.ListColumns("Column3").Index) = ThisWorkbook.Worksheets("Material Check").Range("B5")
    .Range(Tbl1.ListColumns("Column4").Index) = ThisWorkbook.Worksheets("Material Check").Range("B6")
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...