跨动态启动的自动填充列

Posted

技术标签:

【中文标题】跨动态启动的自动填充列【英文标题】:Autofill column across dynamic start 【发布时间】:2017-02-21 12:19:39 【问题描述】:

我正在尝试编写代码以将工作表中的最后一列自动填充到右侧 x 次。

我有最后一列的代码:

 With ActiveSheet
 LC = .Cells(3, .Columns.Count).End(xlToLeft).Column
 End With
 Columns(LC).Select

如果我指定哪些特定列,还有代码会自动填充

 Selection.AutoFill Destination:=Columns("BE:BQ"), Type:=xlFillDefault

我正在努力解决的是如何用链接到原始最后一列 (LC) 的所需代码替换列“BE:BQ”。 理想情况下,我希望它自动填充以添加 10 个新列。你有什么建议吗?

理想情况下,我希望代码循环浏览我工作簿中的所有工作表 - 但这对我来说可能有点高级!

提前非常感谢您。

更新

感谢您推荐的 cmets。我已将代码修改如下。这首先看起来很完美。但是,此后我遇到了两个问题。

问题 1 - 在某些工作表上,当它填充第 3 行中的日期字段时未填充。它只是复制与最后一行中的日期完全相同的日期(即 01/06/2017,但显示为 Jun-17)。我希望这个能一次填满一个月。

问题 2 - 在第 2 行有一个日期,它是上个月的最后一天。这目前是手动输入的,但是当我开发了宏时,我希望将其更改为等于负 1 天以下单元格中的日期的公式。我尝试使用以下公式执行此操作,但完全出错了!

sht.Cells(2, LC).Formula = "=" & Cells(3, LC) & "-1"

任何有关如何解决这两个问题的建议将不胜感激。

【问题讨论】:

一种方法是cells(1,LC).resize(,10).entirecolumn.autofill,但您真的想填满整个列吗(通常不建议或不需要选择)。 不需要 - 我可以添加最后一行计算并通过这种方式自动填充。假设 LR 是计算的最后一行,如何调整 VBA? 请将您的答案移至实际答案,而不是用答案编辑您的问题,然后在指定的时间过去后将答案标记为已接受。这使其他用户更容易找到即将到来的答案。\ @ScottHoltzman 谢谢并更新了答案,但自从我开始使用代码以来,我发现了一些问题。所以更新了上面的问题。 我在下面提出了一个答案。 【参考方案1】:
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

【讨论】:

【参考方案2】:

试试这个。我不确定 A2 位,因为代码表明自动填充从第 3 行开始,但如果还应该包含,可以将代码中的 3 替换为 2。

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

【讨论】:

以上是关于跨动态启动的自动填充列的主要内容,如果未能解决你的问题,请参考以下文章

自动填充公式(跨电子表格运行) - Google 表格/应用程序脚本

创建新行时的剑道网格,使用现有行中的值自动填充字段

自动填充运行时错误 1004 - 自动填充动态范围

通过 VBA 自动填充导致列清除

基于列的Excel flash自动填充行

如何在excel中自动填充列?