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
我需要知道是否可以自动根据列使用范围公式。 这是我的原始代码:
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