我正在尝试编写一个代码,将工作表中的最后一列自动填充到右侧x次。
我有代码,它将获取最后一列:
With ActiveSheet
LC = .Cells(3, .Columns.Count).End(xlToLeft).Column
End With
Columns(LC).Select
以及如果我指定哪些特定列
,将自动填充的代码 Selection.AutoFill Destination:=Columns("BE:BQ"), Type:=xlFillDefault
我正在努力的是如何更换列" BE:BQ"使用与原始最后一列(LC)链接的所需代码。 理想情况下,我希望自动填充以添加10个新列。你有什么建议吗?
理想情况下,我希望代码循环遍历工作簿中的所有工作表 - 但这对我来说可能有点先进!
非常感谢您提前。
更新
感谢您的建议评论。我修改了如下代码。这首先看起来很完美。但是,我遇到了两个问题。
问题1 - 在某些工作表上填充第3行中的日期字段时未填写。它只是复制日期与最后一行完全相同(即01/06/2017,但显示为Jun-17)。我想这一次填补一个月。
问题2 - 在第2行中有一个日期,它是过去一个月的最后一天。这是当前手动输入的,但是由于我已经开发了宏,我希望将其更改为等于下面单元格中的日期减去1天的公式。我试着用下面的公式做到这一点,但它完全出错了!
sht.Cells(2, LC).Formula = "=" & Cells(3, LC) & "-1"
关于如何解决这两个问题的任何建议都将非常感激。
答案 0 :(得分:0)
Dim LC As Integer
Dim LR As Long
ActiveSheet.Unprotect
With ActiveSheet
LC = .Cells(3, .Columns.Count).End(xlToLeft).Column
LR = .Cells(Rows.Count, LC).End(xlUp).Row
End With
Range(Cells(1, LC), Cells(LR, LC)).Select
Selection.AutoFill Destination:=Range(Cells(1, LC), Cells(LR, LC + 10)),Type:=xlFillDefault
答案 1 :(得分:0)
试试这个。我不确定A2位,因为代码表明自动填充从第3行开始,但是如果它也应该被包含在代码中,则可以用2代替3。
Sub x()
Dim LC As Long, LR As Long, ws As Worksheet
For Each ws In Worksheets
With ws
LC = .Cells(3, .Columns.Count).End(xlToLeft).Column
LR = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(.Cells(3, LC), .Cells(LR, LC)).AutoFill Destination:=.Range(.Cells(3, LC), .Cells(LR, LC + 10)), Type:=xlFillDefault
.Cells(3, LC).AutoFill Destination:=.Cells(3, LC).Resize(, 10), Type:=xlFillMonths
.Range("A2").Formula = "=A3-1"
End With
Next ws
End Sub