首页 > 解决方案 > 将公式从活动单元格拖到右侧,其中行是可变的,但列是设置的

问题描述

我正在尝试将公式从 C 列中的单元格直接复制到 F 列。我总是想从 C 列复制公式并拖动到 F 列,但是该行应由活动单元格确定。拖动公式后,我想将这些公式向下拖动到 B 列中包含数据的最后一行。

到目前为止,我录制的宏中的 VBA 如下所示:

ActiveCell.FormulaR1C1 = _
    "=INDEX('Item Setup'!C2:C40,MATCH(R[-8]C2,'Item Setup'!C2,0),MATCH(R4C,'Item Setup'!R4C2:R4C40,0))"
    Range("C13").Select
    Selection.AutoFill Destination:=Range("C13:F13"), Type:=xlFillDefault
Dim lastRow As Long
    lastRow = Range("B" & Rows.Count).End(xlUp).Row
    Range("C13:F13").AutoFill Destination:=Range("C13:F" & lastRow)
    Range("C13:F13").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False

标签: excelvba

解决方案


认为您可以一次性完成此操作,并且无需使用 Select 或 Autofill。

通常不建议将宏基于活动单元格。

Sub x()

Dim lastRow As Long

lastRow = Range("B" & Rows.Count).End(xlUp).Row

With Range(Cells(ActiveCell.Row, "C"), Cells(lastRow, "F"))
    .FormulaR1C1 = _
        "=INDEX('Item Setup'!C2:C40,MATCH(R[-8]C2,'Item Setup'!C2,0),MATCH(R4C,'Item Setup'!R4C2:R4C40,0))"
    .Value = .Value
End With

End Sub

推荐阅读