将公式添加到单元格VBA

将公式添加到单元格VBA,vba,excel,Vba,Excel,基本上,我尝试使用以下代码以编程方式将公式添加到excel工作表的某些单元格中: 'Ajout des formules de calcul de TD LABO For i = 20 To 22 'Formule : TD=(2/3)*C2H6+C3H8+(4/3)*(i-C4H10+n-C4H10) newWorkBook.Worksheets("Feuil1").Cells(i, 16).Formula = (2 / 3) * Cells(i, 11) + Cells(i

基本上,我尝试使用以下代码以编程方式将公式添加到excel工作表的某些单元格中:

'Ajout des formules de calcul de TD LABO
 For i = 20 To 22
    'Formule : TD=(2/3)*C2H6+C3H8+(4/3)*(i-C4H10+n-C4H10)
    newWorkBook.Worksheets("Feuil1").Cells(i, 16).Formula = (2 / 3) * Cells(i, 11) + Cells(i, 14) + (4 / 3) * (Cells(i, 6) + Cells(i, 7))
    'Calcul avec une décimale
    newWorkBook.Worksheets("Feuil1").Cells(i, 16).NumberFormat = "0.0"
 Next i

问题是我添加的单元格的值当我更改公式演算中使用的单元格的值时,公式不会更改。

您不是添加公式,而是计算一个值并将其放入单元格中。您需要使用:

 For i = 20 To 22
    'Formule : TD=(2/3)*C2H6+C3H8+(4/3)*(i-C4H10+n-C4H10)
    newWorkBook.Worksheets("Feuil1").Cells(i, 16).FormulaR1C1 = "=(2/3)*RC11 +RC14+(4/3)*(RC6+RC7)"
    'Calcul avec une décimale
    newWorkBook.Worksheets("Feuil1").Cells(i, 16).NumberFormat = "0.0"
 Next i
或不循环:

'Formule : TD=(2/3)*C2H6+C3H8+(4/3)*(i-C4H10+n-C4H10)
With newWorkBook.Worksheets("Feuil1").Cells(22, 16).Resize(2)
    .FormulaR1C1 = "=(2/3)*RC11 +RC14+(4/3)*(RC6+RC7)"
    'Calcul avec une décimale
    .NumberFormat = "0.0"
End With

您不是在添加公式,而是在计算一个值并将其放入单元格中。您需要使用:

 For i = 20 To 22
    'Formule : TD=(2/3)*C2H6+C3H8+(4/3)*(i-C4H10+n-C4H10)
    newWorkBook.Worksheets("Feuil1").Cells(i, 16).FormulaR1C1 = "=(2/3)*RC11 +RC14+(4/3)*(RC6+RC7)"
    'Calcul avec une décimale
    newWorkBook.Worksheets("Feuil1").Cells(i, 16).NumberFormat = "0.0"
 Next i
或不循环:

'Formule : TD=(2/3)*C2H6+C3H8+(4/3)*(i-C4H10+n-C4H10)
With newWorkBook.Worksheets("Feuil1").Cells(22, 16).Resize(2)
    .FormulaR1C1 = "=(2/3)*RC11 +RC14+(4/3)*(RC6+RC7)"
    'Calcul avec une décimale
    .NumberFormat = "0.0"
End With
试试这个

    Sub fmula()
        For i = 20 To 22
            Range("P" & i).Formula = "= (2/3)*(K" & i & ")+(4/3)*((F" & i & ")+(G" & i & "))"
        Next
    End Sub
试试这个

    Sub fmula()
        For i = 20 To 22
            Range("P" & i).Formula = "= (2/3)*(K" & i & ")+(4/3)*((F" & i & ")+(G" & i & "))"
        Next
    End Sub

如果你使用
FormulaLocal
,我会得到与你使用
FormulaLocal
相同的结果。我会得到相同的结果。我认为你需要引号,但我不记得这是否适用于所有VBA的口味。我还认为VBA在输入公式时不会自动重新计算工作表,除非您明确告诉它这样做,我还以为您需要引号,但我不记得这是否适用于所有类型的VBA。我还认为VBA在输入公式时不会自动重新计算工作表,除非您明确要求它这样做,