从公式VBA中删除行情
我正在寻找一个方程自动填充整行。
我正面临的问题是当方程自动填充时,引用单元格引用。 当它返回方程时,单元格读取= DATEVALUE(“E2”)。
有关如何从E2中删除“”的提示?
下面是我的等式。
谢谢,
丽贝卡
Sub formula() Dim lastRowF As Long lastRowF = Range("E" & Rows.Count).End(xlUp).Row Range("F2").Select ActiveCell.FormulaR1C1 = "=DATEVALUE(E2)" Range("F2").Select Selection.NumberFormat = "m/d/yyyy" Selection.AutoFill Destination:=Range("F2:F" & lastRowF) 'Range("F2:F248225").Select End Sub
-
你正在做
FormulaR1C1
,E2
是A1
格式。 R1C1相对于公式所在的单元格,所以在这种情况下,我们要将一列移动到左边。RC[-1]
。 或者如评论中所述,更改为.Formula
基础。 -
不要使用
Select
。 有关避免该陷阱的更多信息,请参阅此处: 如何避免在Excel VBAmacros中使用select -
无需填充,只需将公式分配给所有单元格。 Excel会自动调整行号,因为它们是相对的而不是绝对的。
所以这样做:
Sub formula() Dim lastRowF As Long With ActiveSheet lastRowF = .Range("E" & .Rows.Count).End(xlUp).Row .Range("F2:F" & lastRowF).FormulaR1C1 = "=DATEVALUE(RC[-1])" .Range("F2:F" & lastRowF).NumberFormat = "m/d/yyyy" End with End Sub
如果你想使用A1风格:
Sub formula() Dim lastRowF As Long With ActiveSheet lastRowF = .Range("E" & .Rows.Count).End(xlUp).Row .Range("F2:F" & lastRowF).Formula = "=DATEVALUE(E2)" .Range("F2:F" & lastRowF).NumberFormat = "m/d/yyyy" End with End Sub