我在找一种可以复制和粘贴单元格的软糖。
单元格X的值必须复制到单元格X+ 6。因此,必须将A1文本"Xteam“复制到单元格A7,直到单元格A380。这同样适用于单元格B2 + 6。
它必须是动态的,所以单元格和序列是动态的。我希望能够自己指出它是哪个细胞和序列..
我如何做到这一点,
我有这个,但没有像我想要的那样工作:
Sub sequence()
Const Nxt As Long = 7
Dim A As Variant, B As Variant, V As Variant, N As Long
A = Range("A1").Value
B = Range("B2").Value
ReDim V(Nxt To 380, 1 To 2)
For N = Nxt To 380
If N Mod 6 = 1 Then
V(N, 1) = A
V(N + 1, 2) = B
End If
Next N
Application.ScreenUpdating = False
Range("A" & Nxt, "B380").Value = V
Application.ScreenUpdating = True
End Sub
先谢谢你,埃尔马尔
发布于 2018-10-19 06:08:03
好的,这是在假设你想要指定你想要向下拷贝A1
和B2
的次数的前提下。所以你的循环是相当混乱的,而不是使用MOD,因为你知道你想要它每6个空格,而且你没有对其他单元格做任何事情,只是为了索引而将数字乘以6会更容易。这还可以帮助您更容易地计算出传输数组的维数,因为您希望指定要复制的次数。
同样值得注意的是,你的Application.screenupdating = False
在错误的地方。你真正想要加速的地方是在循环期间。因此,如果要包含它,我会将它放在代码顶部附近,但这不是非常耗费资源,所以我就省略了它。
通常情况下,如果dim Constants
有助于代码的易读性,这对它是有好处的,但在这种情况下,它似乎没有增加任何清晰度。例如,在改变单元格的颜色并使用颜色索引时,它可能会有所帮助。Constant Red as long = 3
使它更容易理解,而constant Nxt as long = 7
没有添加太多内容。
我没有使用同时处理A
和B
的二维数组,而是选择使用两个列向量,因为它们是交错的,这使得粘贴变得更容易,并且它简化了数学,因为您不需要在交错的行上有项。
最后,我不能鼓吹这一点,但是请,请,请使用一目了然的名称。尽管它在这种情况下可能没有产生很大的不同,但如果你遇到一个更复杂的项目,人们可能会看到它,并不得不想知道V
是用来做什么的。它还可以让人们更容易地帮助你,因为他们不需要坐下来思考每个变量的含义。
我还指定了它所查看的工作表,因此目前它只会查看索引1所指示的第一个工作表。请确保您更改了它,以便它更改正确的工作表。
希望这对我们有所帮助,欢迎来到Stack Overflow。
Option Explicit
Sub sequence()
Dim A As Variant
Dim B As Variant
Dim N As Long
Dim ArrA() As Variant
Dim ArrB() As Variant
Dim NumCopies As Long
A = Range("A1").Value
B = Range("B2").Value
NumCopies = 100
ReDim Preserve ArrA(1 To NumCopies * 6, 1 To 1)
ReDim Preserve ArrB(1 To NumCopies * 6, 1 To 1)
For N = 1 To NumCopies
ArrA(N * 6, 1) = A
ArrB(N * 6, 1) = B
Next N
Worksheets(1).Range("A2:A" & 1 + NumCopies * 6).Value = ArrA
Worksheets(1).Range("B3:B" & 2 + NumCopies * 6).Value = ArrB
End Sub
https://stackoverflow.com/questions/52882070
复制相似问题