#macros #autofill
#макросы #автозаполнение
Вопрос:
Я пытаюсь автоматически заполнять только пустые ячейки этой формулой в заданном диапазоне.
Я тестировал добавление cells.specialcells(xlCellTypeBlanks)
, но оно не работает.
Sub test()
Dim lastRw As Long
Dim Rng As Range
lastRw = Cells(Rows.Count, "P").End(xlUp).Row
Set Rng = Range("Q1:Q" amp; lastRw)
Rng = "=IFERROR(VLOOKUP(RC[-1],R1C1:R1C14,14,FALSE),"""")"
Rng.Value = Rng.Value
End Sub
Я хочу, чтобы он мог вставлять формулу только в пустые ячейки.
Ответ №1:
Добро пожаловать в SO. Я бы посоветовал на будущее убедиться, что вы добавляете соответствующие теги для конкретного языка. Для меня это явно VB6 (vba), но для других это может быть непонятно. Четкая метка поможет получить ответы.
Я постараюсь сделать это просто. Идея:
- Найдите все ячейки, которые потенциально должны быть заполнены
- Просмотрите их и выясните, пусты ли они
- Либо заполните ячейки размером 1 на 1, либо переопределите диапазон, включив в него только пустые ячейки, в которых нет пустых ячеек.
Я буду использовать «1 на 1», используя цикл for.
sub test()
dim fillRange as range
dim lastRow as long
dim i as range 'instead of cell / cells
lastRow = activesheet.usedrange.rows.count 'Alternative for finding last row
set fillRange = range("Q1:Q" amp; lastRow)
for each i in fillRange 'i will be 1 cell in filLRange at a time
'check if the current cell is empty (="") or contains nothing (isnull). If it does, insert formula
if i = "" or isnull(i) then i = "=IFERROR(VLOOKUP(RC[-1],R1C1:R1C14,14,FALSE),"""")"
next i
calculate 'Make sure the formula takes effect
end sub
Там может быть несколько орфографических ошибок, так как я пишу навскидку. (Особенно количество строк, просто используйте свое собственное, если оно не работает. i as cell
возможно i as cells
, так и должно быть.) Но это должно сработать.
Комментарии:
1. Он выдает ошибку. Пользовательский тип не определен. Проверено с помощью cell и cells плюс мой собственный код для lastrow
2. Кажется
cells
, не работает, но настройкаdim i as range
работает нормально после тестирования. Отредактировал мой ответ3. Привет, это работает, но не учитывает строку на P. Он автоматически заполняется до конца
4. Просто преобразуйте предоставленный мной код, чтобы использовать ваш счетчик строк. Я использовал другой метод, который, возможно, вам не подходит (как я указал в ответе). 🙂