在VBA中并行for循环

这是我第一次使用VBA。 我的目标是创build一个值为评估函数的结果列。 这里是我如何构build我的代码的简化版本。

Sub find_alpha() Dim StartNumber As Integer Dim EndNumber As Integer Dim i As Integer Dim alpha As Integer EndNumber = 39 For alpha = 0 To 10 For StartNumber = 1 To EndNumber For i = 0 To 38 Cells(StartNumber, "A").Value = Cells.Item(1, "B") * i * (1 - alpha) Next i Next StartNumber Next alpha End Sub 

这不起作用,因为它只在一个单元格中从0到38循环,而我需要它实际移动并将值添加到每个单元格。 所以i = 0的值应该到A1,i = 2应该到A2,i = 3应该到A3等等。

有没有办法平行移动循环来完成这个?

谢谢!!

你的问题/目标不是很清楚,所以这里有一些可能的盲点:

  1. 从单元格“A1”下降到预定义的行号( EndNumber )将单元格“B1”值乘以从0到(currentRowIndex- 1) * (1 - alpha) ,其中currentRowIndex是在列“A”中的当前单元被写入并且alpha从0变化到10(…)

    那么你会去:

     Option Explicit Sub find_alpha1() Dim StartNumber As Long Dim EndNumber As Long Dim i As Long Dim alpha As Long StartNumber = 1 EndNumber = 39 For alpha = 0 To 10 For i = StartNumber To EndNumber Cells(i, "A").value = Cells.item(1, "B") * (i - 1) * (1 - alpha) Next i Next alpha End Sub 

    相同的代码可以被重写如下:

     Option Explicit Sub find_alpha2() Dim EndNumber As Long Dim alpha As Long EndNumber = 39 For alpha = 0 To 10 With Range("A1").Resize(EndNumber) .FormulaR1C1 = "=R1C2*(ROW()-1)*(1-" & alpha & ")" .Value=.Value '<--| get rid of the formula and leave values only End With Next alpha End Sub 

    但是会出现这样的问题,那些列的“A”单元格会在每个For alpha = 0 To 10循环中被重写…(见下文)

  2. 将从第1行向右“A”开始的行放置到预定义的行号( EndNumber )中,将单元格“B1”值乘以从0到(currentRowIndex- 1) * (1 - alpha) ,其中currentRowIndex是当前列中的当前单元格的行索引被写入,并且列在从0到10的每个alpha循环向右移动

    对于这样的任务,您实际上需要从第2行向下写入单元格,以便不覆盖单元格“B1”

    那么你会去:

     Option Explicit Sub find_alpha3() Dim EndNumber As Long Dim alpha As Long EndNumber = 39 For alpha = 0 To 10 With Range("A2").Offset(, alpha).Resize(EndNumber) .FormulaR1C1 = "=R1C2*(ROW()-2)*(1-" & alpha & ")" .value = .value '<--| get rid of the formula and leave values only End With Next alpha End Sub 
  3. 如果不是1或2,那么是什么?