公式自动填充多列,使用VBA中的特定单元格

特定的细胞:K4和K8

包含公式所需数据的列:A(名为devm的值),C(名为slice的值)和D(名为point的值)

有公式的列进入:E,F和G(想要命名这些值angular度,devmm和高度)

进入E1的公式:=(D1 – 1)* $ K $ 8

进入F1的公式:= A1 * 1000

进入G1的公式:=(C1 – 1)* $ K $ 4

^^^这些只是关于第1行

我希望我的macros将这些公式input到这些行1单元格,然后自动填充到最后一个活动行(我已经对代码进行了sorting)。 我的代码的相关部分在下面。

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 

不需要循环。 您可以一次input所有单元格中的公式

 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是列中的最后一行。

您可以使用“ 在VBA中查找上次使用的单元格时出错 ”。

有几种方法可以解决这个问题,但是只需对代码进行最小限度的修改就可以了。我将为您的公式使用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" 

没有必要find最后一行。 这是一个更简单的方法:

 Selection.AutoFill Destination:= _ Range(Selection, ActiveCell.Offset(0, -1).End(xlDown).Offset(0, 1)) 

这个例子假定你是右边的一列。

双倍胶印是可能的 – 谁知道!