Макрос Excel, чтобы заполнить пропуски в дате далее вниз по столбцу - PullRequest
0 голосов
/ 20 марта 2020

У меня есть таблица Excel, где я хотел бы заполнить несколько пустых ячеек. Эта часть таблицы выглядит следующим образом:

Person        Workplace
Name A
Name B
Name C         Place A
Name D
Name E         Place B
Name F
Name G
Name H         Place C

«Имя A» и «Имя B» также должны иметь рабочее место «Место A», «Имя D» необходимо рабочее место «Место B» и « Для имени F 'и' Имя G 'необходимо указать' Place C '.

Я написал некоторый код (данные рабочего места начинаются в столбце D5):

    Dim cell As Range
    Dim rng As Range
    Set rng = Range("D5", "D" & Cells(Rows.Count, 4).End(xlUp).Row)

    For Each cell In rng
        If cell.Value = "" Then
            cell.Value = Range("D5").End(xlDown)
        End If
    Next cell 

Однако это просто заполняет все ячейки с помощью «Place A».

Я думал, что при заполнении ячеек ячейка «.End (xlDown)» будет динамически меняться на новую последнюю ячейку с новым местом. Может кто-нибудь помочь мне исправить это, чтобы это работало?

Я бы вообще избегал макросов, за исключением того, что есть ряд других операций, выполняемых с очень большим набором данных, и мне нужно будет делать это много раз в течение следующих недель и месяцев ...

1 Ответ

1 голос
/ 20 марта 2020

Вы можете сделать что-то подобное или поиграться с end(xlUp) также .fillup/down

Sub fillin()

Dim r As Excel.Range
Dim c As Excel.Range
Dim s As String

Set r = Range("a1:b8")
Set c = r.Cells(1, 2)

Do Until c.Row > r.Rows.Count

    s = c.End(xlDown).Value

    c.Resize(c.End(xlDown).Row - c.Row, 1).Value = s

    Set c = r.Cells(1, 2).End(xlDown).Offset(1, 0)

Loop

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...