VBA: заполнение пустых ячеек значением выше него плюс один - PullRequest
1 голос
/ 11 июля 2019

У меня есть 5 листов с пустыми ячейками, и мне нужно заполнить их значением выше плюс 1. Например: столбец A имеет 1,2, 4,5, и мне нужен код, который сделает его 1, 2,3,4,5

Я пробовал код, который нашел в Интернете, но он просто копирует значение над ним.

Sub FillBlanks()
Columns("A:A").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "=R[-1]C"
End Sub

Мне нужно заполнить все пробелы.

Ответы [ 2 ]

3 голосов
/ 11 июля 2019

Вы можете сделать это без VBA.

Выберите диапазон, нажмите F5, чтобы открыть диалоговое окно «Перейти к», нажмите Специальный , а в следующем диалоговом окне отметьте Пробелы и нажмите OK. Это выберет все пустые ячейки в выбранном диапазоне.

Теперь, не изменяя выбор, введите знак =, затем нажмите стрелку вверх на клавиатуре и введите +1. Удерживая нажатой клавишу Ctrl , нажмите Enter .

.

enter image description here

Если вы все еще хотите использовать VBA, измените последнюю строку кода на

Selection.FormulaR1C1 = "=R[-1]C+1"

Это даст тот же результат, что и при ручном заходе.

1 голос
/ 11 июля 2019

Ваша программа была бы проще, быстрее и более эффективной , если бы максимально не использовалось Select.Вот правильная программа в одной строке:

Sub FillBlanks()
Columns("A:A").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C+1"
End Sub

Чтобы применить ко всем 5 листам в вашей книге:

Sub FillBlanks()
Dim ws as Worksheet, LastRow as Long
On Error Resume Next
For Each ws in ThisWorkbook.Worksheets
    LastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
    ws.Range("A1:A" & LastRow).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C+1"
Next ws
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...