如何遍历excel VBA宏中的行列

Tec*_*l09 9 excel vba loops

嗨,我正在尝试创建一个具有循环的宏,该循环将功能向下复制到第1列(VOL),并为每个工作站向下复制第2列(CAPACITY).这是我到目前为止:

Sub TieOut()
    Dim i  As Integer
    Dim j As Integer

    For i = 1 To 3
        For j = 1 To 3
            Worksheets("TieOut").Cells(i, j).Value = "'=INDEX('ZaiNet Data'!$A$1:$H$39038,MATCH('INDEX-MATCH'!Z$7&TEXT('INDEX-MATCH'!$A9,"m/dd/yyyy"),'ZaiNet Data'!$C$1:$C$39038,0), 4)"
        Next j
    Next i

End Sub
Run Code Online (Sandbox Code Playgroud)

我想要的图片如下:您可以看到我已经手动复制并粘贴了每列的两个功能.我只需要一个可以遍历它的宏.

替代文字http://i26.tinypic.com/nz4lfn.jpg

我希望在每个站的VOL列中循环的功能是:

=INDEX('ZaiNet Data'!$A$1:$H$39038,MATCH('INDEX-MATCH'!Z$7&TEXT('INDEX-MATCH'!$A438,"M/DD/YYYY"),'ZaiNet Data'!$C$1:$C$39038,0), 4)
Run Code Online (Sandbox Code Playgroud)

我希望在每个工作站的CAPACITY列中循环的功能是:

=INDEX('ZaiNet Data'!$A$1:$H$39038,MATCH('INDEX-MATCH'!Z$7&TEXT('INDEX-MATCH'!$A438,"M/DD/YYYY"),'ZaiNet Data'!$C$1:$C$39038,0), 5)
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?谢谢!

UPDATE

****如何自动运行循环而无需手动将公式输入前两个单元格并单击宏?
另外,我如何让循环遍历所有列/行?(horizo​​ntically)****

我包括两个屏幕截图来显示我的意思.以下是我目前的代码. alt text http://i26.tinypic.com/i3gw9g.jpg alt text http://i29.tinypic.com/8izl.jpg 谢谢!

    Sub Loop3()
    Selection.Copy
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    ActiveCell.Offset(-1, 1).Select
    Selection.Copy
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    ActiveCell.Offset(0, -1).Select

    Dim i  As Integer
    Dim j As Integer
        With Worksheets("Loop")
            i = 1
            Do Until .Cells(10, i).Value = "blank"
                For j = 1 To 10
                    .Cells(j, i).Formula = "=INDEX('ZAINET DATA'!$A$1:$H$39038,MATCH(Loop!E$7&TEXT(Loop!$A9,""M/D/YYYY""),'ZAINET DATA'!$C$1:$C$39038,0),4)"
                    .Cells(j, i + 1).Formula = "=INDEX('ZAINET DATA'!$A$1:$H$39038,MATCH(Loop!E$7&TEXT(Loop!$A9,""M/D/YYYY""),'ZAINET DATA'!$C$1:$C$39038,0),5)"
                Next j
                i = i + 2
            Loop
    End With

    Selection.Copy
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    ActiveCell.Offset(-1, 1).Select
    Selection.Copy
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    ActiveCell.Offset(0, -1).Select

End Sub
Run Code Online (Sandbox Code Playgroud)

Wil*_*elm 6

这是我的消化:

Dim i As integer, j as integer

With Worksheets("TimeOut")
    i = 26
    Do Until .Cells(8, i).Value = ""
        For j = 9 to 100 ' I do not know how many rows you will need it.'
            .Cells(j, i).Formula = "YourVolFormulaHere"
            .Cells(j, i + 1).Formula = "YourCapFormulaHere"
        Next j

        i = i + 2
    Loop
 End With
Run Code Online (Sandbox Code Playgroud)


Jim*_*dra 1

尝试这个:

创建一个宏,其中包含以下内容:

Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 1).Select
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
ActiveCell.Offset(0, -1).Select
Run Code Online (Sandbox Code Playgroud)

该特定宏会将当前单元格(将光标放在要复制的 VOL 单元格中)向下复制一行,然后也复制 CAP 单元格。

这只是一个循环,因此您可以自动将当前活动单元格(光标所在位置)的 VOL 和 CAP 复制到下 1 行。

只需将其放入 For 循环语句中即可执行 x 次。喜欢:

For i = 1 to 100 'Do this 100 times
    Selection.Copy
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    ActiveCell.Offset(-1, 1).Select
    Selection.Copy
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    ActiveCell.Offset(0, -1).Select
Next i
Run Code Online (Sandbox Code Playgroud)