如何使用不同的数据数组自动填充(动态范围)?

时间:2019-09-06 21:50:50

标签: excel vba

我在C2:K11中有数据,我需要使用数据自动向下填充到下一行。

As you can see here

这是我到目前为止可以成功使用的功能,唯一的问题是它正在复制到指定的范围,即C13:K22,而不是填写所有单元格。

Sub CopyStandardFacilitiesDown() 
Sheets("Facilities").Range("C3:K12").Copy 
Range("C13:K22").Select 'Last used cell in column c 
Cells(Rows.Count, 3).End(xlUp).Row ActiveSheet.Paste Application.CutCopyMode = False 
End Sub

当我尝试通过以下方式使用动态范围时,我只能向下复制一个单元格,而不能将我的整个范围复制到所有其他单元格中。

Selection.AutoFill Destination:=Range("AY2:AY" & Range("E" & Rows.Count).End(xlUp).Row) 
Range(Selection, Selection.End(xlDown)).Select

理想情况下,C3:K11会被复制并应用于每个“组织名称”

这是所需最终结果的图片

enter image description here

1 个答案:

答案 0 :(得分:0)

那样的事情怎么样?

Sub autofilldown()
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Facilities") 'instead of Active.Workbook you should use the name of the workbook you are working on

Dim LR As Long 'LR stands for last row
LR = ws.Cells(Rows.Count, "B").End(xlUp).Row 'it will autofill down as long as there is something in corresponding cell in column B
   With ws
      .Range("C12").AutoFill Destination:=.Range("C12:C" & LR), Type:=xlFillDefault
      .Range("D12").AutoFill Destination:=.Range("D12:D" & LR), Type:=xlFillDefault
      .Range("E12").AutoFill Destination:=.Range("E12:E" & LR), Type:=xlFillDefault
      .Range("F12").AutoFill Destination:=.Range("F12:F" & LR), Type:=xlFillDefault
      .Range("G12").AutoFill Destination:=.Range("G12:G" & LR), Type:=xlFillDefault
      .Range("H12").AutoFill Destination:=.Range("H12:H" & LR), Type:=xlFillDefault
      .Range("I12").AutoFill Destination:=.Range("I12:I" & LR), Type:=xlFillDefault
      .Range("J12").AutoFill Destination:=.Range("J12:J" & LR), Type:=xlFillDefault
      .Range("K12").AutoFill Destination:=.Range("K12:K" & LR), Type:=xlFillDefault
   End With
End Sub

这应该自动填充第12行中的公式,直到B列中最后一个非空单元格。