Это динамично как Rows
, так и Columns
. Предполагается, что последняя строка - это ячейка, которая будет использоваться для заполнения пробелов. Если предположение верно, вы можете добавлять строки и столбцы по своему усмотрению, и этот код будет работать без каких-либо изменений
- Определить последнюю строку в диапазоне (определяется
Column A
)
- Определить последний столбец (определяется последней строкой в шаге 1)
- Перебирать строки столбец за столбцом
- Заполнить пробелы значением, связанным с последней строкой, если пусто
Option Explicit
Sub Test()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<== Update Sheet Name
Dim LRow As Long, LCol As Long, r As Long, c As Long
LRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
LCol = ws.Cells(LRow, ws.Columns.Count).End(xlToLeft).Column
Application.ScreenUpdating = False
For c = 1 To LCol
For r = 1 To LRow - 1
If ws.Cells(r, c) = "" Then
ws.Cells(r, c).Value = ws.Cells(LRow, c).Value
End If
Next r
Next c
Application.ScreenUpdating = True
End Sub
Оба примера ниже взяты из одного макроса. Обратите внимание, что он работает, как и ожидалось, для вашего примера (4 Rows x 3 Columns
) и для таблиц других размеров, как пример справа (8 Rows x 7 Columns
)
![enter image description here](https://i.stack.imgur.com/ctpu2.png)