2016-02-29 47 views
0

我是一个新的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以外的所有行中)我想要参考行长的列是相邻的列B.

目前我收到一个错误,说“编译错误:找不到命名参数”。

任何帮助都会非常感谢!

谢谢

+1

对于编译错误,请查看高亮显示的内容。在这种情况下,它是“desination”。你输错了。这是“目的地”。随意删除问题,简单的错别字在StackOverlow上没有地方。 – vacip

+0

即使这样,公式不起作用。当我实际上在过去两天试图寻找解决方案时,我没有必要删除这个问题,只是到了这个论坛,因为它似乎有一个积极的,有帮助的社区,我需要帮助。至少我可以告诉下面有答案的两位用户是有帮助的,而不是对“简单的错别字”作粗暴的评论。 – WJJ

+0

好吧,作为帮助过的用户之一,我很困惑。 :)你的问题是关于编译错误。这是由印刷错误造成的。我们有关于堆栈溢出的规定,应该删除这些类型的问题。不是因为我们讨厌你,而是因为它未来可能不会让任何人受益。我没有试图失礼,我试图帮助。另外,如果答案对您有帮助,您可以将其标记为答案。 – vacip

回答

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 

通知,所以我可以确认的日常工作。

+0

谢谢,我也会尝试这个解决方案!注意到这个公式 - 我会对它进行测试。谢谢!! – WJJ

+0

没问题。请记住,我的解决方案使用A1式公式 – dnep

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 

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

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

+0

谢谢!我会试试这个。是的,我在网上发现了一些不同的解决方案,但是他们中没有一个似乎在使用我的代码。再次感谢你!! – WJJ

相关问题