从公式VBA

时间:2017-06-15 16:59:56

标签: excel vba excel-vba excel-formula

我希望将方程式自动填充到整行。

我面临的问题是当等式自动填充时,它会在单元格引用周围加上引号。当它返回等式时,单元格读取= 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

1 个答案:

答案 0 :(得分:4)

  1. 您正在执行FormulaR1C1E2格式为A1。 R1C1相对于放置公式的单元格,因此在本例中我们要将一列向左移动。 RC[-1]。或者如评论中所述,更改为基于A1的.Formula

  2. 请勿使用Select。有关避免陷阱的更多信息,请参阅此处:How to avoid using Select in Excel VBA macros

  3. 无需填写,只需将公式同时分配给所有单元格。 Excel将自动调整行号,因为它们是相对的而不是绝对的。

  4. 这样做:

    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