具有动态单元格引用的公式

Posted

技术标签:

【中文标题】具有动态单元格引用的公式【英文标题】:Formula with dynamic cell reference 【发布时间】:2017-07-06 11:05:24 【问题描述】:

我有一个 S1 单元格引用的以下公式,它随着公式在整个范围内执行而增加,例如S2,S3,S4。

=INDEX(Range1,((ROW(S1)-1)*Range1=2+ROW(S1)),1,MATCH(1,(Range3=Fixed_Period)*(Range4=Mortgage_InitialRate),0))

我使用这个 sn-p 代码将上述公式应用于动态范围内的每个单元格,但是,由于 S1 不会通过这种方法递增,因此每个单元格的结果都是相同的。因此,我怎样才能确保 S1 每增加一个新行到 S2、S3、S4 等。

Sub Formula()
Dim FLrange As Range
Set FLrange = Range("Range10")

For Each cell In FLrange
cell.Offset(0, 5).FormulaArray = "=INDEX(Range1,((ROW(S1)-1)*Range1=2+ROW(S1)),1,MATCH(1,(Range3=Fixed_Period)*(Range4=Mortgage_InitialRate),0))"

Next cell
End Sub

【问题讨论】:

另外,((ROW(S1)-1)*Range1=2+ROW(S1)),您是按布尔值索引的吗?您的公式中似乎存在语法错误。 【参考方案1】:

为每次循环迭代增加一个整数变量(比如“num”)并使用“S”和 num 而不是“S1”

Sub Formula()
  Dim FLrange As Range
  Set FLrange = Range("Range10")
  Dim num As Integer
  num=1
  For Each cell In FLrange
    cell.Offset(0, 5).FormulaArray = "=INDEX(Range1,((ROW(S" & num & ")-1)*Range1=2+ROW(S" & num & ")),1,MATCH(1,(Range3=Fixed_Period)*(Range4=Mortgage_InitialRate),0))"
    num=num+1
  Next cell
End Sub

【讨论】:

以上是关于具有动态单元格引用的公式的主要内容,如果未能解决你的问题,请参考以下文章

excel中的单元格引用有哪几种方式?

使用单元格中的值作为公式中的单元格引用?

excel怎么使用公式引用单元格

如何在excel 中运算公式中引用单元格值

更改单元格引用的 VBA 到 FillDown 公式

excel 公式中包含带公式的单元格,如何正确引用