我是一名新的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.
目前我收到一条错误消息“编译错误:未找到命名参数”。
非常感谢任何帮助!
谢谢,
答案 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
更简单,更优雅。这种事情在互联网上已经解决了一百万次吗?无论如何,复制粘贴是你在宏中可以做的最慢的事情。躲开它。只需将范围的值设置为范围的值即可。 :)
此外,您可以将公式分配给整个范围。