excel vba 根据我的表格大小自动计算公式

excel vba automatic formulas according to my tables sizes

我需要知道是否可以自动根据列使用范围公式。 这是我的原始代码:

    Sub Formulas_new_sheet()
' Cambiar los rangos acorde al numero de filas usadas

    ' Formula Costo unitario
    Range("D2").Select
    ActiveCell.Formula = "=C2/B2"
    'ActiveCell.FormulaR1C1 = "=RC[-1]/RC[-2]"
    Range("D2").Select
    Selection.AutoFill Destination:=Range("D2:D7"), Type:=xlFillDefault
    Range("D2:D7").Select
    '________________________
    ' Formula de extra / ganancia
    Range("E2").Select
    ' Variar según el porcentaje de ganancia que se busca
     ' recordando .55 = 55% , .30 = 30%
    ActiveCell.Formula = "=D2+(D2*0.55)"
    Selection.AutoFill Destination:=Range("E2:E7"), Type:=xlFillDefault
    Range("E2:E7").Select
    'Formula para precio de venta c/u
    Range("G2").Select
    ActiveCell.Formula = "=E2+F2"
    Range("G2").Select
    Selection.AutoFill Destination:=Range("G2:G7"), Type:=xlFillDefault
    Range("G2:G7").Select
End Sub

然后我在一个论坛上得到了帮助,我得到了这个:

    Sub Macro3()
TableLastRow = 15
Range("D2:D" & TableLastRow).FormulaR1C1 = "=RC[-1]/RC[-2]"
Range("E2:E" & TableLastRow).FormulaR1C1 = "=RC[-1]+(RC[-1]*0.55)"
Range("G2:G" & TableLastRow).FormulaR1C1 = "=RC[-2]+RC[-1]"
End Sub

但现在我想知道是否有更多的自动化。每次我做不同的 table 大小 行数 时不要更改 TableLastRow 谢谢

编写列公式

  • 由于没有错误处理,可以得出结论,B 列始终包含数字,因此您可以使用它来计算 'last row',最后 non-empty 单元格...

    ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
    

    ...或者只确定最后一个 non-empty 单元格...

    ws.Cells(ws.Rows.Count, "B").End(xlUp)
    

    ...如下代码所示:

Sub WriteFormulas()
    
    Dim ws As Worksheet: Set ws = ActiveSheet ' improve!
    
    With ws.Range("B2", ws.Cells(ws.Rows.Count, "B").End(xlUp))
        .Offset(, 2).FormulaR1C1 = "=RC[-1]/RC[-2]"
        .Offset(, 3).FormulaR1C1 = "=RC[-1]+(RC[-1]*0.55)"
        .Offset(, 5).FormulaR1C1 = "=RC[-2]+RC[-1]"
    End With

End Sub