Вы можете инициализировать переменную диапазона для хранения начала вашего выходного диапазона
Dim oRng As Range
Set oRng = Worksheets("Supervisor Listing").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
А затем после вставки значений определите диапазон значений, который вы только что вставили, и вставьте прямо рядом с ним.
With Worksheets("Supervisor Listing")
Worksheets("Employee Assignments").Range("Table2[[#Headers],[John Smith]]").Copy
.Range(oRng, .Cells(Rows.Count, 1).End(xlUp)).Offset(0, 1).PasteSpecial xlPasteValues
.Range(oRng, .Cells(Rows.Count, 1).End(xlUp)).Offset(0, 1).PasteSpecial xlPasteFormats
End With
Итак, из вашего примера вы получите
Dim oRng As Range
Set oRng = Worksheets("Supervisor Listing").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Worksheets("Employee Assignments").Range("Table2[John Smith]").Copy
oRng.PasteSpecial xlPasteValues
oRng.PasteSpecial xlPasteFormats
With Worksheets("Supervisor Listing")
Worksheets("Employee Assignments").Range("Table2[[#Headers],[John Smith]]").Copy
.Range(oRng, .Cells(Rows.Count, 1).End(xlUp)).Offset(0, 1).PasteSpecial xlPasteValues
.Range(oRng, .Cells(Rows.Count, 1).End(xlUp)).Offset(0, 1).PasteSpecial xlPasteFormats
End With
Set oRng = Worksheets("Supervisor Listing").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Worksheets("Employee Assignments").Range("Table2[Jane Doe]").Copy
oRng.PasteSpecial xlPasteValues
oRng.PasteSpecial xlPasteFormats
With Worksheets("Supervisor Listing")
Worksheets("Employee Assignments").Range("Table2[[#Headers],[Jane Doe]]").Copy
.Range(oRng, .Cells(Rows.Count, 1).End(xlUp)).Offset(0, 1).PasteSpecial xlPasteValues
.Range(oRng, .Cells(Rows.Count, 1).End(xlUp)).Offset(0, 1).PasteSpecial xlPasteFormats
End With
Каждый раз, когда oRng
устанавливается в ячейку ниже последней ячейки, использованной в столбце 1 вашего листа "Supervisor Listing"
перед вставкой значений нового сотрудника oRng
упоминается как начальная ячейка, а заголовок вставляется прямо вправо относительно размера только что вставленного диапазона.
Если вы хотите перейти кболее динамический маршрут, вы можете использовать что-то вроде
Dim oRng As Range
Dim t As ListObject
Dim h
Set t = Worksheets("Employee Assignments").ListObjects("Table2")
For Each h In t.HeaderRowRange
Set oRng = Worksheets("Supervisor Listing").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Worksheets("Employee Assignments").Range("Table2[" & h.Value & "]").Copy
oRng.PasteSpecial xlPasteValues
oRng.PasteSpecial xlPasteFormats
With Worksheets("Supervisor Listing")
Worksheets("Employee Assignments").Range("Table2[[#Headers]," & h.Value & "]").Copy
.Range(oRng, .Cells(Rows.Count, 1).End(xlUp)).Offset(0, 1).PasteSpecial xlPasteValues
.Range(oRng, .Cells(Rows.Count, 1).End(xlUp)).Offset(0, 1).PasteSpecial xlPasteFormats
End With
Next
Это будет циклически проходить по всем столбцам вашей таблицы, повторяя ваши действия копирования и вставки для каждого заголовка вашей таблицы.