Excel 宏中的自动填充

Excel 宏中的自动填充

我在 Excel 中有以下宏

在此处输入图片描述

Sub IHIAddWeeks()
'
' IHIAddWeeks Macro
' ihi-table
'
' Keyboard Shortcut: Ctrl+Shift+I
'
    ActiveCell.FormulaR1C1 = "=YEAR(RC[1])&WEEKNUM((RC[1]))"
    Range("A2").Select
    Selection.AutoFill Destination:=Range("A2:A5"), Type:=xlFillDefault

End Sub

之后看起来像:

在此处输入图片描述

现在我自动填充到 A5,因为 A5 是最后一个非空原始值。但这可能会改变。我该怎么说:“自动填充到最后一个非空的 B 列”?

接下来我喜欢在 A2 后插入一个原始数据,如果 A3>A2+1,并让新的 A3=A2+1,然后将 A3 与 A4 进行比较,依此类推,直到 B 列为空白。

有人能帮忙吗?

最后表格应该是这样的 在此处输入图片描述

答案1

我怎样才能说:“自动填充直到最后一个非空的 B 列”?

假设您至少使用的是 Excel 2010(也许 2007 也可以),最好的方法是在运行宏之前将表格转换为 Excel 表格。然后,当您运行宏时,它将自动填充到表格末尾。但是,这仅在运行宏之前列为空时才有效。

恐怕我不明白第二个问题。你的意思是你想要一个公式来判断=R[-1]C+1新单元格是否在上一行之后 1 周?如果是这样,我不明白你为什么要把事情搞得这么复杂。

或者您的意思是如果该单元格与上一行相同,则您希望该单元格为空白?

答案2

因此,获取答案的方法有点奇怪(抱歉,现在我自己无法运行它)

打开宏录制器。选择您需要填充的列旁边的列的顶部(确保您的代码中这不是相对的)。Ctr+向下,箭头指向(确保相对引用已打开)-ctr+shift+向上选择全部,然后 alt+H+F+I+D - 这会自动填充方程式直到底部。

它不是实际的代码,但它描述了如何获取它。

相关内容