Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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 如何将特定数量的行从一个ss复制到另一个ss_Excel_Vba - Fatal编程技术网

Excel 如何将特定数量的行从一个ss复制到另一个ss

Excel 如何将特定数量的行从一个ss复制到另一个ss,excel,vba,Excel,Vba,我有两个主ssaccNo和output。 我正在尝试将x行数从AccNo复制到输出。 x是一个变量,由用户确定,它从一个称为“输入”的不同ss输入到单元格B5。 我是否有办法循环代码,将行A1、A2、A3、A4等从AccNo复制到输出(从输出中的A4开始) 我试着把它作为一个带有按钮的宏,我一次只能做一个,这只是我正在努力处理的循环。例如,我需要它循环x次数。如果x=5我希望它将accNo中的5行以上数据复制到输出 Sub TradingAccount() Set accNo = Th

我有两个主ss
accNo
output
。 我正在尝试将
x
行数从
AccNo
复制到输出。
x
是一个变量,由用户确定,它从一个称为“输入”的不同ss输入到单元格
B5
。 我是否有办法循环代码,将行
A1、A2、A3、A4
等从
AccNo
复制到输出(从输出中的
A4
开始)

我试着把它作为一个带有按钮的宏,我一次只能做一个,这只是我正在努力处理的循环。例如,我需要它循环
x
次数。如果
x=5
我希望它将
accNo
中的5行以上数据复制到输出

Sub TradingAccount()

    Set accNo = ThisWorkbook.Worksheets("AccountNo")
    Set output = ThisWorkbook.Worksheets("Format")
    Set input = ThisWorkbook.Worksheets("input")

    i = 1
    e = 4

    Do loop x amount of times = True
        accNo.Range("A" & i).EntireRow.Copy
        output.Cells(e, 1).PasteSpecial xlPasteValues '(e,1) is A4?
        ActiveCell.Offset(1, 0).Select
        i = i + 1
        e = e + 1
    Loop

End Sub

宏将从一个电子表格向另一个电子表格复制
x
行数。

如果使用的是连续范围,则无需循环。此外,您只使用值,因此我们可以使用
.value=.value
使这一点变得更容易,这样:

dim cnt as long, lrd as long, src as worksheet, dst as worksheet
cnt = sheets("input").cells(5,2).value 'count of rows from B5 on input
set src = sheets("AccNo") 'source sheet
set dst = sheets("output") 'destination sheet
With dst
    lrd = .cells(.rows.count,1).end(xlup).row 'lastrow of destination
    .range(.rows(lrd+1),.rows(lrd+1+cnt-1)).value = src.range(src.rows(1),src.rows(cnt)).value 'FIXED "-1" IN SRC FINAL ROW; SEE COMMENTS
end with

未经测试的代码,但应给出总体思路。请注意,使用了
cnt-1
,因为您有一个起始行(1),并且希望总共有5行(1、2、3、4、5),但将
cnt
添加到起始行将使您进入第6行。

Hi,感谢上面的问题-唯一的问题是它复制到dst单元格a26而不是a4,您知道为什么吗?@NewUser342当前设置为将数据粘贴到最后一行下方(
lrd+1
用于目标工作表的最后一行)。这是不替换/覆盖旧数据的标准,但如果您只需要新数据,您可能需要在工作表上添加
.ClearContents
,这样您就不会试图用5行范围覆盖30行范围。非常感谢,唯一的问题是,例如,如果B5为10,它将复制9行以上,并将第10行保留为#N/a,这是为什么?@NewUser342刚刚在源代码和目标代码中都实现了i
cnt-1
。。。源不应具有-1。。。只有目的地应该是。那是我的错。值
lrd+1
添加了cnt,但添加时需要根据我在帖子中的评论减去
1
;对于源数据,行号是精确的,不应该是
-
,而应该是
src.rows(cnt)