Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
VBA Excel复制与编辑;重复粘贴多个值_Excel_Vba_Copy_Paste - Fatal编程技术网

VBA Excel复制与编辑;重复粘贴多个值

VBA Excel复制与编辑;重复粘贴多个值,excel,vba,copy,paste,Excel,Vba,Copy,Paste,我在VBA excel中遇到多个值的问题,我想复制并粘贴到另一个工作簿(或另一个工作表,但不一定在本主题中) 重点是,我得到了D列和E列,它们的值范围从第1行到第366行(D1:D366和E1:E366),我必须在单元格A5(D列)和B5(E列)中切换它们。这很简单。但是,当我添加另一个复制和粘贴值的命令时,复制的单元格范围保持不变,粘贴数据的单元格范围发生变化(每一步增加30个值),我不知道如何使此过程更快。 我已经做了5个可重复的组合,但我还需要另外361个 是否有更方便的代码用于此操作 我

我在VBA excel中遇到多个值的问题,我想复制并粘贴到另一个工作簿(或另一个工作表,但不一定在本主题中)

重点是,我得到了D列和E列,它们的值范围从第1行到第366行(D1:D366和E1:E366),我必须在单元格A5(D列)和B5(E列)中切换它们。这很简单。但是,当我添加另一个复制和粘贴值的命令时,复制的单元格范围保持不变,粘贴数据的单元格范围发生变化(每一步增加30个值),我不知道如何使此过程更快。 我已经做了5个可重复的组合,但我还需要另外361个

是否有更方便的代码用于此操作

我的代码可以在这里找到:

Sub jan01()
Range("A5") = ("=D1")
Range("B5") = ("=E1")
Sheets("11_POLAND").Range("AJ60:BY86").Copy
Sheets("13").Range("A1:AP27").PasteSpecial xlPasteValues
End Sub

Sub jan02()
Range("A5") = ("=D2")
Range("B5") = ("=E2")
Sheets("11_POLAND").Range("AJ60:BY86").Copy
Sheets("13").Range("A31:AP57").PasteSpecial xlPasteValues
End Sub

Sub jan03()
Range("A5") = ("=D3")
Range("B5") = ("=E3")
Sheets("11_POLAND").Range("AJ60:BY86").Copy
Sheets("13").Range("A61:AP87").PasteSpecial xlPasteValues
End Sub

Sub jan04()
Range("A5") = ("=D4")
Range("B5") = ("=E4")
Sheets("11_POLAND").Range("AJ60:BY86").Copy
Sheets("13").Range("A91:AP117").PasteSpecial xlPasteValues
End Sub

Sub jan05()
Range("A5") = ("=D5")
Range("B5") = ("=E5")
Sheets("11_POLAND").Range("AJ60:BY86").Copy
Sheets("13").Range("A121:AP147").PasteSpecial xlPasteValues
End Sub
根据上述说明,单元格A5和B5的值会逐一改变。 对于每个简单情况,表13的范围每30个单元格向下增加一次。最终,我希望将所有数据一个接一个地复制,而不会像附加的图像中那样重叠(缩小以显示一般用途)。 在此处输入图像描述 为了将所有这些放在一起,我使用了一个宏:

Sub january()
Call jan01
Call jan02
Call jan03
Call jan04
Call jan05
End Sub
不管怎么说,这项工作看起来很乏味,我相信,这是一个更快的解决方案? 有人有过这样的问题吗


谢谢你

我不能100%确定我是否遵循了你在这里试图实现的目标,但我写的这篇文章似乎与你现有的代码一样,只是在一个例程中,而不是在六个例程中:

Sub january()
    Dim i As Integer
    i = 1
    While i < 6
        Range("A5") = ("=D" + CStr(i))
        Range("B5") = ("=E" + CStr(i))
        Sheets("11_POLAND").Range("AJ60:BY86").Copy
        Sheets("13").Range("A" + CStr(i + ((i - 1) * 30)) + ":AP" + CStr(i + ((i - 1) * 30) + 26)).PasteSpecial xlPasteValues
        i = i + 1
    Wend
End Sub
Sub-一月()
作为整数的Dim i
i=1
当我<6
范围(“A5”)=(“=D”+CStr(一))
范围(“B5”)=(“=E”+CStr(i))
图纸(“11_波兰”)。范围(“AJ60:BY86”)。副本
表格(“13”)。范围(“A”+CStr(i+((i-1)*30))+”:AP“+CStr(i+((i-1)*30)+26))。粘贴特殊值
i=i+1
温德
端接头

以此为起点,我想您可以将
I<6
更改为
I<367

这是使用For循环编写的代码。我仍然有我在上面提出的问题,并假设您正在使用哪张表。这与给出的答案类似,除了使用变量使读取代码更容易,以及使用偏移量(同样是为了便于读取代码)

选项显式
公共子复制范围()
Application.ScreenUpdating=False
将图纸从作为工作表,图纸到作为工作表,i等长
Set sheetFrom=此工作簿。工作表(“11_波兰”)
将Sheeto设置为=此工作簿。工作表(“13”)
尺寸范围:设置范围=图纸范围(“A5”)
尺寸范围:设置范围=板材范围(“B5”)
从

因为i=1到5'谢谢你们的帮助

我输入了以下代码:

Sub january()
Dim i As Integer
For i = 1 To 31
Sheets("1_GENERAL").Range("A5") = ("=D" + CStr(i))
Sheets("1_GENERAL").Range("B5") = ("=E" + CStr(i))
Sheets("11_POLAND").Range("AJ60:BY86").Copy
Sheets("13").Range("A" + CStr(i + ((i - 1) * 29)) + ":AP" + CStr(i + ((i - 1) * 29))).PasteSpecial xlPasteValues
Next i
End Sub
其中: -“i”表示某一行。如果是1月,则从1日到31日(一年中的1-31日) -“29”表示每个后续的顶行将被粘贴到大约29行下面。 -D列和E列包括限定到特定“i”值的值


我希望,这将有助于每个在VBA Excel中处理大数据的人。

那么,这些单独的数据可以合并吗?或者有理由将它们分开吗?您好,Mariusz,欢迎使用堆栈溢出,我相信您可以使用
循环
来执行这样的操作,例如。这可以简化您的代码,使其更易于阅读和操作。范围(“A5”)在表格(“11_波兰”)中吗?那么射程(“A5”)=(“=D1”)应该达到什么目标?是否只是范围(“A5”)=范围(“D1”)?或范围(“A5”)。公式=“=D1”?或者完全是别的?这些代码不能组合,因为D行和E行中的每个单元格都应该单独使用。我把范围D和E放在存在特定值的地方,以计算进一步的值。太好了!谢谢它起作用了。然而,我想为这366个值设定12个单独的间隔(月)。在这种情况下,如果我在I>32和I时添加,您建议的更改实际上不会起作用,因为它将以
I=1
开始,请查看
I
不在33和59之间,然后跳过整个循环。实际上,我不确定你所说的12个独立间隔是什么意思;你是说你希望每个月都复制到不同的工作表、不同的区域或完全不同的地方吗?是的。我想将这366个单独的值除以12个月(每单位30-31个值),然后将结果复制到另一个工作表中。很好,我打算尝试将每个月循环的解决方案组合在一起,但这似乎是一个合理的解决方案,所以我将不必理会。很高兴你下了决心。
Sub january()
Dim i As Integer
For i = 1 To 31
Sheets("1_GENERAL").Range("A5") = ("=D" + CStr(i))
Sheets("1_GENERAL").Range("B5") = ("=E" + CStr(i))
Sheets("11_POLAND").Range("AJ60:BY86").Copy
Sheets("13").Range("A" + CStr(i + ((i - 1) * 29)) + ":AP" + CStr(i + ((i - 1) * 29))).PasteSpecial xlPasteValues
Next i
End Sub