Excel VBA数据分析循环

Excel VBA数据分析循环,excel,vba,Excel,Vba,我要找的是一个宏,它可以循环遍历我准备的数据表,以便Excel可以使用“数据分析工具包”同时运行多元回归 所以我的当前数据表是这样设置的,每个因变量都在我试图测量的后续自变量之前。举个例子,我试图衡量的三类因变量是:销售额、收入和成本。 我的因变量是A,B一直到Z 我的示例表设置如下(见附图): 我希望宏从左到右循环此表,并为每个因变量(销售、收入、成本)生成回归分析输出-即,以a和B为自变量生成销售结果,然后对a、B和D的收入执行相同的输出,然后在该输出下,对H,Z的成本做相同的处理,对A,

我要找的是一个宏,它可以循环遍历我准备的数据表,以便Excel可以使用“数据分析工具包”同时运行多元回归

所以我的当前数据表是这样设置的,每个因变量都在我试图测量的后续自变量之前。举个例子,我试图衡量的三类因变量是:销售额、收入和成本。 我的因变量是A,B一直到Z

我的示例表设置如下(见附图):

我希望宏从左到右循环此表,并为每个因变量(销售、收入、成本)生成回归分析输出-即,以a和B为自变量生成销售结果,然后对a、B和D的收入执行相同的输出,然后在该输出下,对H,Z的成本做相同的处理,对A,H,Z等的销售做相同的处理

目前,这是我编写的生成表的代码。请注意,因变量始终是固定的,在本例中,假设因变量始终是销售额、收入和成本

Sub RunRegression()

Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, s1 As Worksheet, lr As Long, lc As Integer
Dim c As Integer, c1 As Integer, r As Long, lc2 As Integer, rng As Range, lr2 As Long, lc3 As Integer, i As Long


Set ws1 = Sheets("Data Table")
Set ws2 = Sheets("Regression name List")
Set ws3 = Sheets("Regression Table")
Set s1 = Sheets("Regression Test")


s1.Range("M30:M1000").Copy ws2.Range("A1")


'Remove all blank cells


ws2.Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete


'clear regression table each run


Sheets("Regression Table").Cells.Clear


'create regression table from Data table to set up regression table to allow for regression to be peformed.


lr = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
lc = ws1.Cells(1, ws1.Columns.Count).End(xlToLeft).Column
lc2 = ws3.Cells(1, ws1.Columns.Count).End(xlToLeft).Column
For r = 1 To lr
    For c = 1 To lc
        If ws2.Cells(r, 1).Value = ws1.Cells(1, c).Value Then
            ws1.Columns(c).Copy
            ws3.Cells(1, lc2).PasteSpecial Paste:=xlPasteValues

        lc2 = lc2 + 1

        End If

    Next c
Next r


' Example of a for loop used to cycle through and perform regression


'    For i = 1 To 3
'
'        Application.Run "ATPVBAEN.XLAM!Regress", .Cells(1, .Column("C") + i).Resize(61), _
'        .Cells(1, .Column("AC") + i).Resize(61), False, True, , _
'        .Cells(109 + i * 20, .Column("C") + i), False, False, False, False, , False
'    Next i




End Sub

我相信您也知道,Excel的一个限制是它只能对因变量旁边的自变量执行回归,这就是为什么我必须创建一个宏来生成一个表,以帮助Excel循环并生成回归分析。

您的代码有什么问题?@RobinMackenzie我不知道如何使我的代码在表中循环,并根据下一个因变量从表中向左向右移动的时间动态更改范围。然后改变自变量的范围,使其向上延伸,直到下一个因变量向上,然后返回一列。如果这有意义?@RobinMackenzie-当使用数据分析工具进行回归分析时,其中一个限制是它要求所有自变量都在相邻的列中。我已经创建了一个表,按照该顺序设置信息。我所需要的只是一个for循环,它可以循环遍历列标题并确定因变量的范围(如果它是三个选项中的一个),然后确定它旁边的其他自变量的范围(即下一个因变量的范围减去1)所以你的问题不是回归分析,而是如何循环范围?更新您的问题以反映这一点会很有用。