特异性细胞:K4和K8
包含公式所需数据的列:A(名为devm的值),C(名为slice的值)和D(名为point的值)
包含公式的列:E,F和G(想要将这些值命名为angle,devmm和height)
进入E1的公式: =(D1 - 1)* $ K $ 8
进入F1的公式: = A1 * 1000
进入G1的公式: =(C1 - 1)* $ K $ 4
^^^这些只针对第1行
我希望我的宏将这些公式输入到这些第1行单元格中,然后自动填充到最后一个活动行(我已经将代码排序了)。我的代码的相关部分如下。
K = 1
ender = Tier * increment
last = LastTier * increment
starter = ender - (increment - 1)
If starter = 0 Then
starter = 1
End If
sheetname1 = "Sheet1"
ActiveSheet.Name = sheetname1
ActiveSheet.Range("K2") = TankHeight
ActiveSheet.Range("K3") = LastTier - 1
ActiveSheet.Range("K4").Formula = "=$K$2/$K$3"
ActiveSheet.Range("K6").Value = 360
ActiveSheet.Range("K7") = increment
ActiveSheet.Range("K8").Formula = "=$K$6/$K$7"
' ********************************************************************
Set Range1 = Range("A1:J65536")
With Range1
Rows(last + 2).Delete
End With
For K = starter To ender
Devm = ActiveSheet.Range("A" & K).Value
Rad = ActiveSheet.Range("B" & K).Value
slice = ActiveSheet.Range("C" & K).Value
point = ActiveSheet.Range("D" & K).Value
' ***Automation settings for Formulas and Autofill down to last***
ActiveSheet.Range("E1").Formula = "=(D1-1)*$K$8"
ActiveSheet.Range("F1").Formula = "=A1*1000"
ActiveSheet.Range("G1").Formula = "=(C1-1)*$K$4"
Angle = ActiveSheet.Range("E" & K).Value
Devmm = ActiveSheet.Range("F" & K).Value
height = ActiveSheet.Range("G" & K).Value
K = K + 1
ActiveSheet.Range("C1").Select
Next
答案 0 :(得分:4)
无需循环。您可以一次性在所有单元格中输入公式
Range("E1:E" & lastRow).Formula = "=(D1 - 1) * $K$8"
Range("F1:F" & lastRow).Formula = "=A1 * 1000"
Range("G1:G" & lastRow).Formula = "=(C1 - 1) * $K$4"
其中lastRow
是列中的最后一行。
您可以使用“Error in finding last used cell in VBA”找到它。
答案 1 :(得分:0)
有几种方法可以解决这个问题,但要对代码进行最少的更改,我会对公式使用R1C1表示法,并对每行使用k的引用:
ActiveSheet.Range("E" & k).FormulaR1C1 = "=(RC[-1]-1)*R8C11"
ActiveSheet.Range("F" & k).FormulaR1C1 = "=RC[-5]*1000"
ActiveSheet.Range("G" & k).FormulaR1C1 = "=(RC[-4]-1)*R4C11"
答案 2 :(得分:0)
无需找到最后一行。这是一个更简单的方法:
Selection.AutoFill Destination:= _
Range(Selection, ActiveCell.Offset(0, -1).End(xlDown).Offset(0, 1))
此示例假设您是右侧的一列。
双重抵消是可能的 - 谁知道!!