Дважды щелкните автозаполнение – динамический, основанный на смежной ячейке

Мне нужно сделать:

Excel Autofill

Я использую обычную функцию автозаполнения в Excel (дважды щелкните точку на стороне ячейки), чтобы скопировать содержимое в подэлементы, поэтому в этом случае щелчок точки в ячейке A1 сделает следующее:

введите описание изображения здесь

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

Предположительно, это то, что вы ищете:

 Option Explicit Sub FillInTheBlanks() Dim StartCell As Range, EndCell As Range Set StartCell = ActiveCell Set EndCell = ActiveSheet.Cells(ActiveSheet.UsedRange.Rows.Count + 1, StartCell.Offset(0, 1).Column).End(xlUp) Dim currentText As String Dim i As Long For i = StartCell.Row To EndCell.Row If Not IsEmpty(ActiveSheet.Cells(i, StartCell.Row)) Then currentText = ActiveSheet.Cells(i, StartCell.Row).Text Else ActiveSheet.Cells(i, StartCell.Row).Value = currentText End If Next i End Sub 

Этот код выполняет следующие действия:

введите описание изображения здесь


Если вы действительно хотите, что на вашем скриншоте, вам нужно будет сделать это:

 Option Explicit Sub FillInTheBlanks() Dim StartCell As Range, EndCell As Range, NextCell As Range Set StartCell = ActiveCell Set EndCell = Cells(ActiveSheet.UsedRange.Rows.Count + 1, StartCell.Offset(0, 1).Column).End(xlUp) While StartCell.Row < EndCell.Row Set NextCell = StartCell.Offset(1, 1).End(xlDown).Offset(0, -1) StartCell.AutoFill Destination:=ActiveSheet.Range(StartCell, NextCell), Type:=xlFillDefault Set StartCell = NextCell.Offset(1, 0) Wend End Sub 

Что делает это:

введите описание изображения здесь

Вы можете сделать это с клавиатуры …

  • Выберите колонку A
  • Выберите Главная | Поиск и выбор | Goto Special … Заготовки OK
  • Нажмите [=] [стрелка вверх] [ctrl + Enter]

Чтобы удалить формулы, выберите Колонка A, скопируйте и вставьте специальные значения.

введите описание изображения здесь

Давайте будем гением компьютера.