繁体   English   中英

通过调整单元格引用创建动态数组溢出

[英]Create Dynamic Array Spill-down with Adjusting Cell References

我正在尝试创建一个动态数组溢出,其中包含随着数组溢出而调整的单元格引用。

假设我在单元格A1 中放置10并在A2 中输入:

=IF(ROWS($1:1)>9,"",LN(10+A1^2))

并手动向下复制。 当我向下复制时,A1 参考将调整。 所以A3 中的公式将引用A2 中的值。 A4 中的公式将引用A3 中的值等:

在此处输入图片说明

但这是手动的而不是动态的。 另一个有效的手动公式是:

=IF(ROWS($1:1)>9,"",LN(10+INDEX(A:A,ROWS($1:1))^2))

我成功的唯一方法是使用 VBA:

Public Function propr(r As Range, N As Long)
    Dim arr, i As Long
    
    If N = 1 Then
    propr = Application.WorksheetFunction.Ln(10# + r.Value ^ 2)
         Exit Function
    End If
    
    ReDim arr(1 To N, 1 To 1)
    arr(1, 1) = Application.WorksheetFunction.Ln(10# + r.Value ^ 2)
    For i = 2 To N
        arr(i, 1) = Application.WorksheetFunction.Ln(10# + arr(i - 1, 1) ^ 2)
    Next i
    propr = arr
End Function

但我想要一个公式而不是一个 UDF。

我尝试过的:

=LN(10+INDEX(A:A,SEQUENCE(9))^2)

这会生成循环引用警告:

在此处输入图片说明

这应该很容易,但我没有看到。

如果您打开“迭代计算”并引用要填充的行,则将解决循环引用问题,并且您的公式将溢出。

此外,如果不需要。 A2使用(当然您可以使用其他技术来定义范围,例如INDEX

=LN(10+A1:A9^2)

在此处输入图片说明

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM