Динамическое расширение таблицы Excel на основе записей в другой таблице

Я настраиваю электронную таблицу, чтобы пользователи могли вводить данные по сотруднику и дате. Я хотел бы создать динамическую таблицу, которая расширяется на основе записей в другую таблицу. Например, могу ли я автоматически расширять TABLE1 на основе новых сотрудников, введенных в TABLE2, чтобы они выглядели как TABLE3, делая TABLE3 готовым для ввода нового пользователя в столбец "Значение"?

ТАБЛИЦА 1

ТАБЛИЦА 1

ТАБЛИЦА 2

ТАБЛИЦА 1

ТАБЛИЦА 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
Другие вопросы по тегам