2016-04-22 112 views
1

我在這裏要做的是編寫一個代碼,根據列B,使用最後一個數據單元格填入列A中的最後一行數據列A作爲自動填充的範圍。例如列A是「名稱」,B是「日期」。 B列有6個日期,而列A每隔幾行有一個不同的「名稱」。以下是我迄今爲止:根據使用最後一個單元格的相鄰列,VBA自動填充關閉

次試驗(+)

Dim lastRow As Long 
lastRow = Range("B" & Rows.Count).End(xlUp).Row 
Range("A2").AutoFill Destination:=Range("A2:A" & lastRow) 

末次

這裏是我的問題:

我想運行的腳本,並使其選擇最後填滿單元格A(例如A4)並自動填充到列B中的數據的最後一行。

我的問題是它一直選擇「A2」而不是A中的最後一個單元格(「A4」i在這個例子中)使用「A2」自動填充和填充列A的全部,向右移動至少一個距離。

+2

'一直選擇「A2」 instead'因爲你告訴它:'Range(「A2」)。AutoFill' – findwindow

回答

1
Sub copyDown() 
Dim lastRow As Long, i& 
lastRow = Range("B" & Rows.Count).End(xlUp).Row 
For i = 1 to 2 
    Cells(2,i).AutoFill Destination:=Range(Cells(2,i),Cells(lastRow,i)) 
next i 
End Sub 

正如@Findwindow所提到的,您不會更改自動填充的單元格。爲了簡化循環(循環遍歷列A和B),我喜歡使用Cells([row],[column]),然後循環遍歷這兩個循環。

如果你不希望它是A2或其他什麼,那麼只需將第一個Cells(2,i)更改爲你想要的位置。

2

這會發現在列A和使用,來代替過去的佔領細胞:

Sub test() 
Dim ws As Worksheet 
Dim lastRow As Long 
Dim Alastrow As Long 
Set ws = ActiveSheet 
lastRow = ws.Range("B" & ws.Rows.Count).End(xlUp).row 
Alastrow = ws.Range("A" & ws.Rows.Count).End(xlUp).row 
Range("A" & Alastrow).AutoFill Destination:=Range("A" & Alastrow & ":A" & lastRow) 
End Sub 
0

另一種簡單的方法來實現的,如下

Sub simple_way() 
    Range("A2:A" & Range("B" & Rows.Count).End(xlUp).Row).Value = Range("A2").Value 
End Sub 
相關問題