【问题标题】:Iterate named ranges to use with LINEST迭代命名范围以与 LINEST 一起使用
【发布时间】:2019-11-20 13:04:51
【问题描述】:

我有一个大数据集。我需要过滤然后将过滤后的数据复制到新工作表中,并执行多项式回归以预测特定时间的数据。

数据集的长度不是定义值,可以从一个数据集更改为下一个数据集。我使用 VBA 来查找数据集的结尾,然后创建命名范围,稍后在 LINEST 中使用。

它适用于一个过滤的数据集。

当我遍历我的数据时,我相信代码会用新数据覆盖命名范围。最后我所有的 LINEST 计算都是一样的。

有没有办法更改命名范围以便对其进行迭代?我尝试创建一个设置为我的 Range name + i 的变量,但我无法在 LINEST 中使用该变量。

Sub Regression()

Dim TimeX As Range
Dim X_Time As String
Dim Xxx As Range
Dim XX As String
Dim rws As Long

i = 1

Do While i < 70

    rws = Cells(Rows.Count, "A").End(xlUp).Row

    Set TimeX = Range("$B$2:$B$" & rws)
    Set Xxx = Range("$C$2:$C$" & rws)

    ‘X_Time = "TimeX" & i
    ‘XX = "Xxx" & i

    X_Time = "TimeX"
    XX = "Xxx"

    ThisWorkbook.Names.Add Name:=X_Time, RefersTo:=TimeX
    ThisWorkbook.Names.Add Name:=XX, RefersTo:=Xxx

    Range("L4:N4").Select
    Selection.FormulaArray = "=LINEST(Xxx,TimeX^{1,2},TRUE,FALSE)"

    i = i + 1
Loop

End Sub

【问题讨论】:

    标签: excel vba range


    【解决方案1】:

    尝试更改您的代码,如下所示:

    ' ...
    XX = "Xxx" & i
    '...
    'XX = "Xxx"
    Selection.FormulaArray = "=LINEST(" & XX & ",TimeX^{1,2},TRUE,FALSE)"
    

    【讨论】:

      猜你喜欢
      • 2011-06-06
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      相关资源
      最近更新 更多