Вот решение VBA.
1) Откройте редактор VBA (Alt+F11)
2) Дважды щелкните объект листа в окне Project Explorer слева (оно имеет древовидную структуру)
3) Вставьте этот код:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
If TypeName(Target) = "Range" Then
If LenB(Target.Cells(1, 1).Value) > 0 Then
If Not Intersect(Target, Range("A:A")) Is Nothing Then
If Target.SpecialCells(xlCellTypeLastCell).Row = UsedRange.Rows.Count Then
If UsedRange.Rows.Count > Sheet2.UsedRange.Rows.Count Then
For Each cell In Target.Cells
If Not Intersect(cell, Range("A:A")) Is Nothing Then Sheet2.Cells(Sheet2.UsedRange.Rows.Count + 1, 1).Value = cell.Value
Next
End If
End If
End If
End If
End If
Set cell = Nothing
End Sub
4) Измените значения, как вам нужно. Наиболее важными из них являются следующие:
4.1) Range("A:A")
Измените его так, чтобы он находился там, где находится столбец « Name
если его нет в столбце « A
.
4.2) Sheet2
Измените на кодовое имя VBA рабочего листа, куда вы хотите скопировать значения. Кодовое имя - это то, что отображается в этом дереве в левой части редактора VBA. По умолчанию это такие вещи, как Sheet1
, Sheet2
и т.д. (Это то же самое, что имя вкладки по умолчанию, но без пробела.)
Ключевой момент: это только добавляет строки. Он не удаляет их при удалении вещей на листе-1. Вы можете сделать это, но я стараюсь избегать удаления вещей в VBA, если я действительно не уверен, потому что вы не можете легко отменить эту операцию.