2016-02-29 49 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

相關問題