Динамическое расширение таблицы Excel на основе записей в другой таблице
Я настраиваю электронную таблицу, чтобы пользователи могли вводить данные по сотруднику и дате. Я хотел бы создать динамическую таблицу, которая расширяется на основе записей в другую таблицу. Например, могу ли я автоматически расширять TABLE1 на основе новых сотрудников, введенных в TABLE2, чтобы они выглядели как TABLE3, делая TABLE3 готовым для ввода нового пользователя в столбец "Значение"?
ТАБЛИЦА 1
ТАБЛИЦА 2
ТАБЛИЦА 3
1 ответ
Не лучший способ делать что-то, но это может помочь вам или, по крайней мере, направить вас в правильном направлении с тем, что вы пытаетесь сделать.
Если Таблица 1 находится на Листе 1, а Таблица 2 на Листе 2, то при добавлении новых строк в Таблицу 2 следующий код скопирует это имя и вставит его три раза в Таблицу 1 Листа 1, а затем скопирует даты из записей выше, в в этом случае даты Билла.
Поместите следующий код под Листом 2 в Событие изменения рабочего листа, как показано на рисунке ниже:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
LastRow = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row 'check the last row on Sheet 2 Table 2
LastRow1 = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row + 1 'Check the last row on Sheet1 Table 1
If Target.Row = LastRow Then 'if a new row is added to Table 2
Sheet1.Cells(LastRow1, Target.Column).Value = Target.Value 'copy their name to table 1 three times
Sheet1.Cells(LastRow1 + 1, Target.Column).Value = Target.Value
Sheet1.Cells(LastRow1 + 2, Target.Column).Value = Target.Value
Sheet1.Cells(LastRow1, 2).Value = Sheet1.Cells(LastRow1, 2).Offset(-3, 0).Value 'copy the Date from the date above on Sheet1
Sheet1.Cells(LastRow1 + 1, 2).Value = Sheet1.Cells(LastRow1 + 1, 2).Offset(-3, 0).Value
Sheet1.Cells(LastRow1 + 2, 2).Value = Sheet1.Cells(LastRow1 + 2, 2).Offset(-3, 0).Value
End If
End Sub