Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel vba在循环限制范围内复制和粘贴循环_Vba_Excel - Fatal编程技术网

Excel vba在循环限制范围内复制和粘贴循环

Excel vba在循环限制范围内复制和粘贴循环,vba,excel,Vba,Excel,新手在此访问此网站和Excel VBA。我在下面的帖子中使用了RichA的代码,能够很好地将数据填充/复制到另一张工作表(Sheet2)中 代码链接到原始帖子 我有一个问题,关于如何将范围限制为“命名范围”(C13:Z111),而不是此代码中的“整列”(“C”)。我似乎无法将它限制为复制行,从最后一行数据开始,倒计时到第一行 我有一些标题在顶部的行(C1:C12),数据从第13行开始。因此,当将值从一个工作表复制到“另一个”工作表时,最上面的行也会复制。我想在第13行结束数据复制 谢谢你的帮助

新手在此访问此网站和Excel VBA。我在下面的帖子中使用了RichA的代码,能够很好地将数据填充/复制到另一张工作表(Sheet2)中

代码链接到原始帖子

我有一个问题,关于如何将范围限制为“命名范围”(C13:Z111),而不是此代码中的“整列”(“C”)。我似乎无法将它限制为复制行,从最后一行数据开始,倒计时到第一行

我有一些标题在顶部的行(C1:C12),数据从第13行开始。因此,当将值从一个工作表复制到“另一个”工作表时,最上面的行也会复制。我想在第13行结束数据复制

谢谢你的帮助

以下是目前有效的方法,但我无法限制范围

Sub Generate_Invoice()

Dim i As Long
Dim ii As Long
Dim i3 As Long
Dim LastRow As Long
Dim wb As Workbook
Dim sht1 As Worksheet
Dim sht2 As Worksheet

Set wb = ThisWorkbook
Set sht1 = wb.Sheets("INCENTIVE")
Set sht2 = wb.Sheets("Sheet2")

Sheets("Sheet2").Select
Range("B11:Z200").ClearContents

'Find the last row (in column C) with data.
LastRow = sht1.Range("C13:C111").Find("*", searchdirection:=xlPrevious).Row
ii = 2

'This is the beginning of the loop >>>This Works BUT BUT BUT goes all the way to the top - REQUESTING HELP WITH CODE ENDS AT ROW 13 AND DOES NOT GO PAST<<<

For i = 3 To LastRow
    'First activity
    sht2.Range("B" & ii) = sht1.Range("C" & i).Value
    sht2.Range("C" & ii) = sht1.Range("G" & i).Value
    sht2.Range("D" & ii) = sht1.Range("H" & i).Value
    sht2.Range("E" & ii) = sht1.Range("P" & i).Value
    sht2.Range("F" & ii) = sht1.Range("R" & i).Value
    sht2.Range("G" & ii) = sht1.Range("AD" & i).Value

    ii = ii + 1

Next i

'Return to "Sheet2"
Sheets("Sheet2").Select

'Add SUM at bottom of last record in Range"D"
 Dim ws As Worksheet

    For Each ws In Worksheets
        With ws.Range("F" & Rows.Count).End(xlUp).Offset(2)
            .FormulaR1C1 = "=SUM(R11C6:R[-1]C6)"
            .Offset(, -1).Value = "Total:"
        End With
    Next ws

End Sub
子生成发票()
我想我会坚持多久
Dim ii(长)
尺寸i3与长度相同
最后一排一样长
将wb设置为工作簿
Dim sht1作为工作表
将sht2变暗为工作表
设置wb=ThisWorkbook
设置sht1=工作表(“激励”)
设置sht2=工作表(“表2”)
图纸(“图纸2”)。选择
范围(“B11:Z200”).ClearContents
'查找包含数据的最后一行(在C列中)。
LastRow=sht1.Range(“C13:C111”).Find(“*”,searchdirection:=xlPrevious.Row
ii=2

'这是循环的开始>>>这起作用,但一直到顶部-请求代码帮助在第13行结束,并且没有经过您只需要根据所需的条件退出for循环。例如:

If ii = 13 Then Exit For

您正在查找最后一行,但仅查找人口密集区域内的内容。我建议更改最后一行的确定方法,即从工作表的底部开始,在C列中查找最后填充的单元格。这类似于在C1048576中单击Ctrl键+▲.

“查找包含数据的最后一行(在C列中)。
LastRow=sht1.Cells(Rows.Count,“C”).End(xlUp).Row
“不确定您是否也要扭转这种局面
ii=2

'这是循环的开始>>>这起作用,但一直到顶部-请求代码帮助在第13行结束,而不是通过将i=3的更改为LastRow更改为将i=13的更改为LastRow或将ii=2的更改为'ii=13`。。。现在不完全是哪一个,因为我有点困惑。谢谢你的快速回答——非常感谢。执行这些更改时,数据将按相反顺序复制。Sheet2显示从最后一条记录开始的行,以及从最后一条记录开始的行。同时,C列中带空格的行现在也被复制。数据仍写入第1-13行。我尝试不复制第1-13行中的行,并开始复制有效的第13行,而不是从第1行开始,原因、标题和说明位于第1-13行。感谢您的推荐。此更改在第13行停止,因此在代码范围内仅显示一条记录,因为我们正在该范围内复制。
'Find the last row (in column C) with data.
LastRow = sht1.Cells(Rows.Count, "C").End(xlUp).Row

'not sure whether you want to reverse this as well
ii = 2

'This is the beginning of the loop >>>This Works BUT BUT BUT goes all the way to the top - REQUESTING HELP WITH CODE ENDS AT ROW 13 AND DOES NOT GO PAST<<<

For i = LastRow To 13 Step -1   'work from the bottom to the top.
    'First activity
    sht2.Range("B" & ii) = sht1.Range("C" & i).Value
    sht2.Range("C" & ii) = sht1.Range("G" & i).Value
    sht2.Range("D" & ii) = sht1.Range("H" & i).Value
    sht2.Range("E" & ii) = sht1.Range("P" & i).Value
    sht2.Range("F" & ii) = sht1.Range("R" & i).Value
    sht2.Range("G" & ii) = sht1.Range("AD" & i).Value

    'not sure whether you want to reverse this as well
    ii = ii + 1

Next i