使用“For Each”循环将公式添加到选择集外部的单元格

时间:2015-09-15 08:23:39

标签: excel vba excel-vba

选择框可以出现在标题行下方第二行的下方。我需要在选择范围内插入有效行数,然后在列102中的每个单元格中为新插入的行添加公式。我不是那么熟悉'For Each'循环方法,但我知道我不是要尝试将公式添加到选择的每个单元格中,仅在第102列中。示例:

  • 标题行是第10行
  • 单元格B13至C16在代码执行时被选中
  • 第13行第102列中的
  • 单元格得到公式“= sum(Q13:t13)”
  • 第14行第102列中的
  • 单元格得到公式“= sum(q14:t14)”
  • 第15行第102列中的
  • 单元格得到公式“= sum(q15:t15)”
  • 第16行第102列中的
  • 单元格得到公式“= sum(q16:t16)”

我还没有调整我的公式代码,但这将是我的下一步。现在我遇到的问题是我只能将公式放在第102列的最后一行,而不是102中的每一行。

Private Sub AddRows()
    Dim HeaderRow as Integer

    HeaderRow=10 'define the header row

    With Selection
        If .Row > HeaderRow + 1 Then 'use only rows that are after the header row
            .EntireRow.Insert        'insert the rows 
            For Each Row In Selection.Rows
                .Cells(Row, 102).Value = "=sum($F19:$CW19)" '19 needs to match row number
            Next
        End If
    End With
End Sub

1 个答案:

答案 0 :(得分:1)

这是R1C1型配方的完美案例。像

这样的东西
.Cells(Row, 102).FormulaR1C1 = "=SUM(RC6:RC101)"

如果您真的想要值而不是公式,可以添加一行:

.Cells(Row, 102).Value = .Cells(Row, 102).Value

修改

您可以在所有插入后立即将公式添加到第102列:

With Range("CX1:CX" & lastRow).SpecialCells(xlCellTypeBlanks)
    .FormulaR1C1 = "=SUM(RC6:RC101)"
End With