循环为单元格分配来自不同工作表但以数组形式的值

hye*_*rii 1 excel vba

我正在尝试编写一个循环来为单元格分配来自不同工作表但以数组形式的值。

  • 计数器指当前工作表中的当前行。
  • iRow 也是如此,但对于另一张纸。
  • 该值指的是列。
  • 因此,下面的代码使用另一个工作表单元格中的值分配当前工作表上的单元格。
  • 现在我正在手动输入此语句来分配值。我想要一个循环,这样我就不必每次都键入相同的语句框。
mArray(counter, 25) = dArray(iRow, 18)
mArray(counter, 26) = dArray(iRow, 19)
mArray(counter, 27) = dArray(iRow, 20)
mArray(counter, 28) = dArray(iRow, 21)
mArray(counter, 29) = dArray(iRow, 22)
mArray(counter, 30) = dArray(iRow, 23)
mArray(counter, 31) = dArray(iRow, 24)
mArray(counter, 32) = dArray(iRow, 25)
mArray(counter, 33) = dArray(iRow, 26)
mArray(counter, 34) = dArray(iRow, 27)
mArray(counter, 35) = dArray(iRow, 28)
mArray(counter, 36) = dArray(iRow, 29)
mArray(counter, 37) = dArray(iRow, 30)
mArray(counter, 38) = dArray(iRow, 31)
mArray(counter, 39) = dArray(iRow, 32)
mArray(counter, 40) = dArray(iRow, 33)
mArray(counter, 41) = dArray(iRow, 34)
mArray(counter, 42) = dArray(iRow, 35)
Run Code Online (Sandbox Code Playgroud)

我创建的循环。

Dim a As Integer, b As Integer
                    
For a = 25 To 42
    For b = 18 To 35            
        mArray(counter, a) = dArray(iRow, b)
    Next b
Next a
Run Code Online (Sandbox Code Playgroud)

Dom*_*que 5

恭喜。
您偶然发现了一种特殊的循环:嵌套循环(一个循环位于另一个循环内部)。

让我向您展示您已编程的内容:

For a = 25 To 42
  For b = 18 To 35
    do_something(a,b)
  Next b
Next a
Run Code Online (Sandbox Code Playgroud)

当您启动它时,将执行以下内容:

do_something(25,18)
do_something(25,19) ' inner loop increases
do_something(25,20) ' inner loop increases
do_something(25,21) ' inner loop increases
do_something(25,22) ' ...
do_something(25,23)
do_something(25,24)
do_something(25,25)
do_something(25,26)
do_something(25,27)
do_something(25,28)
do_something(25,29)
do_something(25,30)
do_something(25,31)
do_something(25,32)
do_something(25,33)
do_something(25,34)
do_something(25,35) ' inner loop is finished, now let's increase the outer loop

do_something(26,18)
do_something(26,19)
do_something(26,20)
...
do_something(26,35)
do_something(26,18)
do_something(26,19)
...
do_something(26,35)
do_something(27,18)
...
(up to:)
do_something(42,35)
Run Code Online (Sandbox Code Playgroud)

如您所见,在嵌套循环的情况下,您将运行内部循环。完成此操作后,您将转到外循环中的下一项,然后再次执行整个内循环,...,如此循环,直到外循环完成并且内循环完成,好吧,x 数量次数:-)

显然,这不是您想要的:在您的情况下,a 和 b 之间有一个简单的关系:a = b + 7

所以,这就是你可以做的:

For a = 25 To 42
  do_something(a,a - 7)
Next a
Run Code Online (Sandbox Code Playgroud)

或者:

For b = 18 To 35
  do_something(b + 7,b)
Next b
Run Code Online (Sandbox Code Playgroud)

祝你好运

  • 哇,非常感谢,这效果非常好。总的来说,我对 VBA 还很陌生,所以我一直在学习,这确实有助于拓宽我的知识面。谢谢! (2认同)