具有变化范围的自动填充/填充公式

Posted

技术标签:

【中文标题】具有变化范围的自动填充/填充公式【英文标题】:Autofill/FillDown Formulas with Changing Range 【发布时间】:2015-01-13 17:43:53 【问题描述】:

我是 VBA 新手,在使用 Autofill/Filldown 函数时可能需要一些帮助。

我正在设置一个宏以将 Vlookup 公式合并到新工作表的第一个空列的单元格中。

这适用于第一个单元格,但我无法使用自动填充/填充功能将公式复制到电子表格中的所有单元格(或至少复制到第 450 行),因为我不知道如何在不定义范围的情况下执行此操作。我无法定义范围,因为它每次都会有所不同..

ActiveSheet.Range("IV1").End(xlToLeft).Offset(, 1).Formula = "=VLOOKUP(B2,Plate.xlsm!$R$3:$S$10,2,FALSE)"

请帮忙!

【问题讨论】:

【参考方案1】:

或者你可以直接这样做:

With ActiveSheet
    Dim FirstEmpCol As Long, LastRow As Long
    FirstEmpCol = .Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 1).Column
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
    .Range(.Cells(2, FirstEmpCol), .Cells(LastRow, FirstEmpCol).Formula = _
        "=VLOOKUP(B2,Plate.xlsm!$R$3:$S$10,2,FALSE)"    
End With

【讨论】:

【参考方案2】:

这应该可以满足您的需求。它将在第 2 行中找到第一个空白列,在其中插入公式,然后使用 B 列将其复制到最后一行以检查最后使用的行(因为这是 VLookUp 正在查看的列:

Sub TesterIt()

  Dim LastRow As Long, StartCell As Range

  Set StartCell = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1)
  StartCell.Formula = "=VLOOKUP(B2,Plate.xlsm!$R$3:$S$10,2,FALSE)"
  LastRow = Range("B" & Rows.Count).End(xlUp).Row
  Range(StartCell, Cells(LastRow, StartCell.Column)).FillDown

End Sub

【讨论】:

以上是关于具有变化范围的自动填充/填充公式的主要内容,如果未能解决你的问题,请参考以下文章

Excel 自动填充和调整公式

范围自动填充一行,最好只使用变量

Excel VBA:自动填充公式的代码,无论左侧列的长度是多少(因此不需要指定范围)

制作动态 VBA 自动填充范围

如何自动填充公式 VBA

范围类上的自动填充错误