Vba 是否将另一个常量/列添加到此宏?

Vba 是否将另一个常量/列添加到此宏?,vba,excel,Vba,Excel,它现在做的是将A:E列中输入的内容添加到F列中的任何内容,并将A:E保持不变。这比复制和粘贴要容易得多,但我想添加另一行,以便A:F是常量,将列表切换到G列 对于ex,一旦输出 A1,B1,C1,D1,E1,F1 A1,B1,C1,D1,E1,F2 A1,B1,C1,D1,E1,F3 etc. 我只想添加另一个列,使它 A1,B1,C1,D1,E1,F1,G1 A1,B1,C1,D1,E1,F1,G2 A1,B1,C1,D1,E1,F1,G3 这就是我目前所拥有的 Dim LastRowIp

它现在做的是将A:E列中输入的内容添加到F列中的任何内容,并将A:E保持不变。这比复制和粘贴要容易得多,但我想添加另一行,以便A:F是常量,将列表切换到G列

对于ex,一旦输出

A1,B1,C1,D1,E1,F1
A1,B1,C1,D1,E1,F2
A1,B1,C1,D1,E1,F3
etc.
我只想添加另一个列,使它

A1,B1,C1,D1,E1,F1,G1
A1,B1,C1,D1,E1,F1,G2
A1,B1,C1,D1,E1,F1,G3
这就是我目前所拥有的

Dim LastRowIput As String
    With Sheets("Input")
    LastRowInput = .Cells(.Rows.Count, "C").End(xlUp).Row
    End With


For I = 2 To LastRowInput

Dim LastRowLoc As String
    With Sheets("Output")
    LastRowLoc = .Cells(.Rows.Count, "F").End(xlUp).Row + 1
    End With


    Sheets("Input").Select
    Range("F2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Output").Select
    Range("F" & LastRowLoc).Select
    ActiveSheet.Paste
    Sheets("Input").Select
    Range("A" & I & ":" & "E" & I).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Output").Select

    Dim LastRow As String
    With ActiveSheet
    LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row + 1
    End With

    Range("A" & LastRow).Select
    ActiveSheet.Paste

    Dim LastRowLoc2 As String
    With Sheets("Output")
    LastRowLoc2 = .Cells(.Rows.Count, "F").End(xlUp).Row
    End With

    Application.CutCopyMode = False
    Range("A" & LastRow & ":" & "E" & LastRowLoc2).Select
    Selection.FillDown

    Sheets("Input").Select

Next I

似乎您希望将A:G中的行从输入复制到输出,在输出中为G中的每一行扩展A:F

Dim i As Long, lastRowInput As Long, nextRowOutput As Long
Dim wso As Worksheet

Set wso = Worksheets("Output")

With Sheets("Input")
    lastRowInput = .Cells(.Rows.Count, "C").End(xlUp).Row

    For i = 2 To lastRowInput
        nextRowOutput = wso.Cells(.Rows.Count, "G").End(xlUp).Row + 1
        .Range(.Cells(2, "G"), .Cells(2, "G").End(xlDown)).Copy _
          Destination:=wso.Cells(nextRowOutput, "G")
        .Range("A" & i & ":" & "F" & i).Copy _
          Destination:=wso.Range(wso.Cells(nextRowOutput, "A"), _
                                 wso.Cells(wso.Cells(.Rows.Count, "G").End(xlUp).Row, "F"))
    Next i
End With
我删除了所有涉及和方法的方法,支持直接引用


输入工作表中的样本数据



输出工作表的示例结果

您似乎希望将A:G中的行从输入复制到输出,并在输出中为G中的每一行展开A:F

Dim i As Long, lastRowInput As Long, nextRowOutput As Long
Dim wso As Worksheet

Set wso = Worksheets("Output")

With Sheets("Input")
    lastRowInput = .Cells(.Rows.Count, "C").End(xlUp).Row

    For i = 2 To lastRowInput
        nextRowOutput = wso.Cells(.Rows.Count, "G").End(xlUp).Row + 1
        .Range(.Cells(2, "G"), .Cells(2, "G").End(xlDown)).Copy _
          Destination:=wso.Cells(nextRowOutput, "G")
        .Range("A" & i & ":" & "F" & i).Copy _
          Destination:=wso.Range(wso.Cells(nextRowOutput, "A"), _
                                 wso.Cells(wso.Cells(.Rows.Count, "G").End(xlUp).Row, "F"))
    Next i
End With
我删除了所有涉及和方法的方法,支持直接引用


输入工作表中的样本数据



输出工作表的示例结果

一个可以帮助您了解其工作原理的快速说明是。
将LastRowI设置为字符串大小
将LastRowInput设置为字符串大小
?(注意拼写和变量类型)查找/替换所有
F
G
,然后查找/替换所有
E
F
,这就是我尝试的。不起作用,它只是用F作为变量,我不理解循环。从输入中获取所有F,并从第一行开始将其放入输出。然后你复制a:E的一行,做同样的事情,然后填充到F的范围。但是你循环,对下一行做同样的事情。循环的原因对我来说毫无意义。一个可能有助于您了解其工作原理的简要说明是。
Dim LastRowIput As String
Dim LastRowIput As Long
?(注意拼写和变量类型)查找/替换所有
F
G
,然后查找/替换所有
E
F
,这就是我尝试的。不起作用,它只是用F作为变量,我不理解循环。从输入中获取所有F,并从第一行开始将其放入输出。然后你复制a:E的一行,做同样的事情,然后填充到F的范围。但是你循环,对下一行做同样的事情。你为什么循环对我来说毫无意义。