我正在尝试遍历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
答案 0 :(得分:1)
您提供的解释和代码并不匹配。所以我知道你想要做以下事情:
输入2个值。搜索值(SumFramework.Range(“A1”))和输入值(SumFramework.Range(“N7”))。现在,与“搜索”值匹配的工作表“框架”B列中列表中的每个项目都会在C列中分配输入值。如果我的理解错误,请详细说明:)
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
colB = colB + 1
,您可以跳过每个部分行。