Как мне заставить эту формулу заполнять только пустые ячейки?

#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. Найдите все ячейки, которые потенциально должны быть заполнены
  2. Просмотрите их и выясните, пусты ли они
  3. Либо заполните ячейки размером 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. Просто преобразуйте предоставленный мной код, чтобы использовать ваш счетчик строк. Я использовал другой метод, который, возможно, вам не подходит (как я указал в ответе). 🙂