通过VBA扩展Worksheetformula而不写入值

时间:2014-11-20 12:17:28

标签: excel excel-vba excel-formula vba

我的问题如下: 我有一个模板,我使用VBA填充。当他们来来往往时,我输入员工的时间价值。在表格的底部,模板中有一个公式,用于总计工作小时数。

一个典型的集合看起来像这样......

A1: 08:00
A2: 12:00
A3: 13:00
A4: 17:00
A5: =(A1-A2)+(A3-A4)

如果员工已经工作了一个额外的时间段,让我们说从18:00-22:00,那么我需要将其添加到模板中。我这样做是在A4下方插入两行并从上面的行复制格式。所有这一切都与VBA有关。所以工作表现在看起来像这样:

A1: 08:00
A2: 12:00
A3: 13:00
A4: 17:00
A5: 18:00
A6: 22:00
A7: =(A1-A2)+(A3-A4)

我的问题是我需要调整A7中的公式,并且它绝对需要成为一个公式,因为员工应该能够在我创建之后在预先填充的模板中输入值。

我不知道怎么做。

非常感谢任何建议!谢谢!

1 个答案:

答案 0 :(得分:1)

由于您的数据在单个列中的值为,因此您只需创建正确的公式并将其放在列的底部:

Sub FormulaMaker()
    Dim N As Long, sForm As String, sLittle As String
    N = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To N - 1 Step 2
        sLittle = "(A" & i & "-A" & i + 1 & ")"
        If sForm = "" Then
            sForm = "=" & sLittle
        Else
            sForm = sForm & "+" & sLittle
        End If
    Next i
    Cells(N + 1, "A").Formula = sForm
End Sub

你也可以使用(A2-A1)而不是(A1-A2)