【问题标题】:Formula Autofill down multiple columns, using specific cells in VBA公式自动填充多列,使用 VBA 中的特定单元格
【发布时间】:2014-10-26 14:29:53
【问题描述】:

特定细胞:K4 和 K8

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

要输入公式的列:E、F 和 G(希望将这些值命名为角度、devmm 和高度)

进入 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

【问题讨论】:

  • -1 因为你的问题是“我有 X,我想要 Y”

标签: vba excel formula autofill


【解决方案1】:

不需要循环。可以一次性在所有单元格中输入公式

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”找到它。

【讨论】:

  • 所以我真的不需要“For K = ...”部分吗?我的整个宏有一个循环,但是无论在特定消息框上单击是/否,它都会消失
  • 哦,D1、A1等会根据行自动变化吗??
  • 对于你不需要循环的公式:)它会自动用正确的公式填充所有单元格直到结束
【解决方案2】:

有几种方法可以解决这个问题,但要对代码进行最少的更改,我会为您的公式使用 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"

【讨论】:

    【解决方案3】:

    无需查找最后一行。这是一个更简单的方法:

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

    此示例假定您位于右侧一列。

    双偏移是可能的——谁知道呢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      相关资源
      最近更新 更多