2016-07-26 22 views
2

我想知道如何填寫(或複製?)一行(lastUsedRow)直到最後一行。然而我發現自己在指定範圍上掙扎(特別是因爲我正在處理不同大小的不同數據集)。在VBA上填寫一行

以前

我需要當場lastUsedRowlastUsedRow = .Range("A" & .Rows.Count).End(xlUp).Row) - 這是此行31。它指定列A中有數據的最新行。

然後我想告訴VBA填寫直到最後一行(lastRow) - 第39行 - 可以使用lastRow = .Range("E" & .Rows.Count).End(xlUp).Row找到。它表示最新行,那裏有在列數據E.

enter image description here

enter image description here

問題後

VBA建議與Range().FillDown工作,但我奮鬥指定編碼變化數據集時的範圍秒。更確切地說,我如何寫下lastUsedRowlastRow之間的範圍?

+0

這似乎是你的'fillRange'不那麼正確。如果您需要將它填充到A39,那麼爲什麼只將它定義爲A20? –

+0

'Set fillRange = Worksheets(「Sheet1」)。Range(「A1:A」&lastRow)'? –

+2

@DavidZemens從他所說的和顯示的內容,可能更像是'Set fillRange = Worksheets(「Sheet1」)。Range(「A」&lastUsedRow&「:D」&lastRow)'? – Mikegrann

回答

2

我想你想在列從lastUsedRow向下填充列A至d,從lastUsedRow(從柱A定義)的lastRow(從山口M規定),使用值A:d。

Dim lastRow as Long, lastUsedRow as Long 
Dim srcRange as Range, fillRange as Range 
With Worksheets("Sheet1") 
    lastUsedRow = .Range("A" & .Rows.Count).End(xlUp).Row 
    lastRow = .Range("M" & .Rows.Count).End(xlUp).Row 
    ' Fill values from A:D all the way down to lastUsedRow 

    Set srcRange = .Range("A" & lastUsedRow & ":D" & lastUsedRow) 
    Set fillRange = .Range("A" & lastRow & ":D" & lastUsedRow) 

    fillRange.Value = srcRange.Value 
End With 

如果你需要保存的格式,然後使用Copy方法:

srcRange.Copy Destination:=fillRange 

注:+1到您使用見correct way to find the 'last row'

+0

感謝您抽出一些時間來幫助我!但是,不是填充,而是擦除lastUsedRow(我的意思是填充到最後一行) – pdx

+0

令人驚歎的是,它完美的工作!謝謝你的幫助! – pdx