Excel VBA – 一次循环一列

我正在循环Sht1 (B2:B138)每一行,并为该循环中的每个项目设置一个“input”单元Sht2 (A1) ,一次一个。 然后,“输出”单元Sht2 (N7)将被复制回Sht1 (C2:C138)


举个例子:

Sht2 (A1) = value in Sht1 (B2) ,则Sht1 (C2) = value in Sht2 (N7)

重复

Sht2 (A1) = value in Sht1 (B3) ,则Sht1 (C3) = value in Sht2 (N7)


一遍又一遍,直到它到达列表的底部。 最终,我可能不得不在Sht1 ColB扩展列表,所以我一直试图让它评估dynamic需要的迭代次数。

我在下面的代码给了我所有正确的“输出”,但他们并没有在Sht2 ColC正确的单元格。 请看下面。 我研究并发现这个Q / A是有用的,并用它来影响代码。 我感谢你的帮助提前。 我的工作簿 ,以防你需要看到它。

 Sub fnDescCalc() 'Define the objects Dim wb As Workbook Dim Framework As Worksheet Dim SumFramework As Worksheet Dim colB As Long Dim colC As Long Dim LastcolC As Integer Dim LastcolB As Long 'Set the Variables Set wb = ThisWorkbook Set Framework = wb.Sheets("Framework") Set SumFramework = wb.Sheets("Sum_Framework") LastRowcb = Framework.Range("B:B").Find("*", searchdirection:=xlPrevious).Row colB = 2 LastcolC = 138 'This is the beginning of the main loop For colC = 2 To LastcolC 'This is the beginning of the nested loop For colB = 2 To LastcolB SumFramework.Range("A1") = Framework.Range("B" & colB).Value colB = colB + 1 Framework.Range("C" & colC) = SumFramework.Range("N7").Value colC = colC + 1 Next colB Next colC End Sub 

你提供的解释和代码并不真正匹配。 所以我明白你想要做到以下几点:

您input2个值。 search值(SumFramework.Range(“A1”))和input值(SumFramework.Range(“N7”))。 现在,“框架”表中B列中与search值匹配的列表中的每个项目都被分配了列C中的input值。如果我的理解错误,请详细说明:)

1.在你的代码中LastcolB永远不会被初始化,所以它将是0,循环将永远不会执行。

2.你只需要一个循环来做什么[编辑:你在你的评论中描述]:

 MaxRow = Framework.Range("B:B").Find("*", searchdirection:=xlPrevious).Row 'Alternative if the last row is the actual last row and .Row < 1000: 'MaxRow = Framework.Range("B1000").End(xlUp).Row For rowB = 2 To MaxRow SumFramework.Range("A1") = Framework.Range("B" & rowB).Value Framework.Range("C" & rowB) = SumFramework.Range("N7").Value Next rowB 
  1. “For … Next”自动计数。 用colB = colB + 1你可以跳过每一节的行。