我的原始程序能够根据月和周查找我需要的单元格现在我需要修改程序以复制第5行中最后使用的单元格并将其粘贴到列的末尾。
实施例。如果是11月的月份,那么它是第4周,那么程序就知道去那里并填写信息。我无法弄清楚如何将Nov wk 4中的值粘贴到列的其余部分。我的范围也可以是H5:BA5或BC5:DB5,具体取决于月份和周开始的位置。
我添加了一张图片,显示我的数据是如何设置的,突出显示的细胞需要填写到最后
public class MotionData : TableEntity
{
public MotionData() { }
public string SpaceId {get; set;}
public DateTime ReadingTime { get; set; }
}
答案 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