目前,我有一些VBA代码可以自动填充列AE:AH中的公式,只要有更多数据发布到工作表中。我正在尝试将来证明它并使我的范围更加动态,以防我们添加更多的公式。这是当前的代码。
Sheets(twtsumsheet).Select
usedRows1 = Worksheets(twtsumsheet).Cells(Worksheets(twtsumsheet).Rows.Count, "A").End(xlUp).Row
Range("AE2:AH2").Select
Selection.AutoFill Destination:=Worksheets(twtsumsheet).Range(Cells(2, 31), Cells(usedRows1, 34)), Type:=xlFillDefault
因此,例如,目前公式在AE:AH列中。我们假设我们要再添加一个来计算数据,所以现在我们在AE:AI列中有公式。由于这个"范围(" AE2:AH2"),我的宏将继续自动填充AE:AH中的公式。选择"这个"细胞(2,31),细胞(usedRows1,34)"
我是VBA编码的新手,所以我没有得到任何好的想法。任何帮助表示赞赏。
答案 0 :(得分:2)
我的 OCD 迫使我去清洁"这段代码有点......
按照@Scott Craner的建议,查找包含数据的最后一栏。
注意:您应该远离使用Select
。
With Sheets(twtsumsheet)
usedRows1 = .Cells(.Rows.Count, "A").End(xlUp).Row
usedCols1 = .Cells(2, .Columns.Count).End(xlToLeft).Column ' get the last column
With .Range(.Cells(2, 31),.Cells(2, usedCols1))
.AutoFill Destination:=.Range(.Cells(2, 31), .Cells(usedRows1, usedCols1)), Type:=xlFillDefault
End With
End With
答案 1 :(得分:2)
老实说,我不明白为什么这么多人使用.AutoFill当.FillDown或FillRight更合适。
with Sheets(twtsumsheet)
usedRows1 = .Cells(.Rows.Count, "A").End(xlUp).Row
usedCols1 = .Cells(2, .columns.count).End(xltoleft).column
.Range(.Cells(2, 31), .Cells(usedRows1, usedCols1)).filldown
end with