我在 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 - 这会自动填充方程式直到底部。
它不是实际的代码,但它描述了如何获取它。