【发布时间】:2015-10-14 03:34:35
【问题描述】:
我正在尝试遍历Sht1 (B2:B138) 中的每一行,并为该循环中的每个项目设置一个“输入”单元格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 中的列表,因此我一直试图让它动态评估所需的迭代次数。
我在下面尝试的代码为我提供了所有正确的“输出”,但它们最终没有出现在 Sht2 ColC 的正确单元格中。请看下文。我研究并发现this Q/A 很有帮助,并用它来影响代码。我提前感谢您的帮助。 My workbook 以备不时之需。
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
【问题讨论】:
-
“输出不在正确的位置” - 输出在哪里结束?你预计他们会在哪里结束?您是否 [使用 F8] 逐行运行代码,将鼠标悬停在变量上以查看它们是否会变成您意想不到的东西?
-
我想我的意思是,如果 Sht1 B2 进入“输入”单元格,那么来自“输出”单元格的值将被粘贴到 C2 中的 B2 旁边。但是当我运行它时,情况并非如此,它们都粘贴在 colC 中,但它似乎是随机的。我将上传我的文件并尝试您的 F8 建议。
-
好的,我已链接到上面的主工作簿文件
标签: excel vba loops foreach nested-loops