自动填充直到列结束

时间:2016-11-29 16:12:36

标签: excel vba excel-vba

我的原始程序能够根据月和周查找我需要的单元格现在我需要修改程序以复制第5行中最后使用的单元格并将其粘贴到列的末尾。

实施例。如果是11月的月份,那么它是第4周,那么程序就知道去那里并填写信息。我无法弄清楚如何将Nov wk 4中的值粘贴到列的其余部分。我的范围也可以是H5:BA5或BC5:DB5,具体取决于月份和周开始的位置。

我添加了一张图片,显示我的数据是如何设置的,突出显示的细胞需要填写到最后

enter image description here

public class MotionData : TableEntity
        {
            public MotionData() { }

            public string SpaceId {get; set;}

            public DateTime ReadingTime { get; set; }
        }

2 个答案:

答案 0 :(得分:3)

首先,您需要STOP USING .SELECT!

其次,您已经找到了如何在代码中找到最后使用的列。为什么不使用相同的逻辑来查找最后使用的行?

With ThisWorkbook.Sheets(SheetName)
    Dim c2 As Long, LastCol2 As Long, LastRow As Long
    c2 = 2
    LastCol2 = .Cells(4, .Columns.Count).End(xlToLeft).Column

    Do Until .Cells(1, c2).Value = "Sept" And .Cells(4, c2).Value = "Wk 5"
        If .Cells(1, c).Value = MonthSel And .Cells(4, c).Value = WkSel Then
           .Cells(5, c2).copy
           .Cells(5, c2).Offset(0, 1).Paste
           Application.CutCopyMode = False
           LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
           .Cells(5, c2).Offset(0, 1).AutoFill Destination:=Range("H5:BA" & LastRow), Type:=xlFillDefault
        End If
    Loop
End With

答案 1 :(得分:0)

一个更简单的解决方案(如果我们假设您的单元格中有某种查找公式)是抓住所有B列并自动填充所有52周:

Sub TestingIt()
    Dim LastRow As Long
    With ThisWorkbook.Sheets(SheetName)
        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row 
        Range("B5:B" & LastRow).AutoFill Destination:=Range("B5:BA" & LastRow), Type:=xlFillCopy
    End With
End Sub