尝试将整个列中的公式复制到相邻列中的最后一行数据

时间:2016-02-29 18:43:20

标签: excel vba excel-vba

我是一名新的VBA用户,我正在尝试创建一个VBA代码,将整个列中的单个Vlookup公式复制到相邻列中的最后一行数据。我不想指定一个特定的范围,因为我打算将这个宏用于具有不同行范围的多个不同文件,所以我正在寻找一个代码,只需复制到相邻列中的最后一个值。

我试过在这个网站上查看其他类似的问题和答案,但我找到的解决方案都没有发挥作用,我真的很感激一些帮助!

这是我目前的代码:

' Section5 Macro
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[6],'[PERSONAL.XLSB]Task and Sections'!R2C1:R254C2,2,FALSE)"
        Range("C2").Select
        Selection.Copy 'Copy Vlookup Formula

        Dim lastRow As Long
        lastRow = Range("B" & Rows.Count).End(xlUp).Row
        Range("C3").AutoFill destination:=Range("C3:C" & lastRow) 'Specify range for Column C based off of row count in Column B

        Application.CutCopyMode = False
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False 'Paste Vlookup equation down the column
  End Sub

我要复制的公式是“= VLOOKUP(RC [6],'[PERSONAL.XLSB]任务和章节'!R2C1:R254C2,2,FALSE”。我想要复制此公式的列是C列(在除了C1之外的所有行中都是Header)。我想引用行长的列是相邻的列B.

目前我收到一条错误消息“编译错误:未找到命名参数”。

非常感谢任何帮助!

谢谢,

2 个答案:

答案 0 :(得分:1)

正如评论所指出的那样,你有一个简单的拼写错误(" desination")......尽管如此,即使修复了这些代码,你的代码似乎也无法正常工作。 这是一种更简单的方法。试试这个:

Sub FillWithFormula()
    Dim lastRow As Long
    lastRow = Range("B" & Rows.Count).End(xlUp).Row
    Range("C2:C" & lastRow).FormulaLocal = "=B2*2"
End Sub

请注意,我用更简单的公式替换了公式(独立于外部数据),因此我可以验证例程是否有效。

答案 1 :(得分:0)

下面。

Sub thing()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 2).End(xlUp).Row

    Range("C3:C" & lastRow).FormulaR1C1 = "=VLOOKUP(RC[6],'[PERSONAL.XLSB]Task and Sections'!R2C1:R254C2,2,FALSE)"

    Range("C3:C" & lastRow).Value = Range("C3:C" & lastRow).Value
End Sub

更简单,更优雅。这种事情在互联网上已经解决了一百万次吗?无论如何,复制粘贴是你在宏中可以做的最慢的事情。躲开它。只需将范围的值设置为范围的值即可。 :)

此外,您可以将公式分配给整个范围。