繁体   English   中英

VBA根据使用最后一个单元格的相邻列自动填充

[英]VBA Autofill Down According to Adjacent Column Using Last Cell

我在这里想要做的是编写一个代码,该代码将使用列A中数据的最后一个单元格作为自动填充的范围,根据列B将数据自动填充到列A的最后一行。 例如,列A是“名称”,列B是“日期”。 B列有6个日期,而A列每隔几行就有一个不同的“名称”。 这是我到目前为止的内容:

子测试()

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”)进行自动填充,并使用“ A2”填充列A的全部,直到正确的距离。

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)更改为您想要的外观即可。

这将在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

另一个简单的实现方法如下

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM