如何获得此公式以仅填充空白单元格?

时间:2019-04-17 19:38:48

标签: 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" & lastRw)
    Rng = "=IFERROR(VLOOKUP(RC[-1],R1C1:R1C14,14,FALSE),"""")"
    Rng.Value = Rng.Value

End Sub

我希望它只能将公式粘贴到空白单元格上。

1 个答案:

答案 0 :(得分:0)

欢迎来到SO。我建议以后确保为特定语言添加适当的标签。对我来说这显然是VB6(vba),但对其他人来说可能不清楚。清晰的标签将有助于接收答案。

我会尽量保持简单。一个想法:

  1. 找到所有可能要归档的单元格
  2. 仔细检查它们,弄清楚它们是否为空
  3. 要么以1比1填充单元格,要么将范围重新定义为仅包含无空单元格。

我将使用for循环使用“ 1-by-1”。

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" & 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。)但是它应该可以解决问题。