我认为这是一个非常基本的VBA挑战,并花了几个小时寻找答案。如果有人可以将我指向正确的地方,如果已经解决了,那就谢谢了。
我的公式是B1 + C1 = D1,并且有两个1x5矩阵的数据输入,一个用于单元格B1,另一个用于单元格C1,比如[1,2,3,4,5]和[A, B,C,D,E]分别在细胞(B2:B7)和(C2:C7)中。我想循环输入,这样我得到五个独特的答案[1 + A,2 + B,3 + C,4 + D,5 + E],并在相邻的1x5矩阵中输出这些答案,比如说细胞(D2:D7)。
录制宏在这里不起作用,因为它记录了一个不灵活的复制/粘贴动作以供将来使用(对于扩展矩阵,其他工作表位置,更复杂的公式等)。
任何帮助都非常感激。
亨利
更新:我相信我需要使用" Do While"或者一些类似的循环代码,以及额外的" For"和"下一步"编码
更新:以下是我尝试使用代码执行操作的分步图: step-by-step process results image
答案 0 :(得分:0)
以下是解决方案代码:
Sub IterationMacro()
'声明变量
Dim h, i, j, k As Integer
Dim mySheet As Worksheet
Dim myAnswer As String
'设置工作表
Set mySheet = ActiveSheet
'设置迭代次数
h = Range("B2").Value
'清除上一个内容
Range("C4:D4").ClearContents
Range("e5:e11").ClearContents
'贯穿循环
For i = 5 To h + 4
For j = 3 To 4
mySheet.Cells(4, j).Value = mySheet.Cells(i, j).Value
Next
'计算工作簿
Calculate
mySheet.Cells(i, 5).Value = mySheet.Cells(4, 5).Value
Next
End Sub
答案 1 :(得分:-1)
如果您可以绘制一张桌子或其他东西作为例子,它可能会有所帮助。
假设我低调你,你想在D1中使用一个公式,并填充到D7,导致每一行显示B + C = D:
Range("D1").Formula="=B1+C1"
Range("D1:D7").Filldown
编辑:
获得示例图像后,看起来您希望数学发生在第2行(第1行中的标题)中。在第2行中,您想要从行“i”中提取值并在第2行中添加它们,然后在行“i”中粘贴该总和的答案。
Dim i as Integer 'i is the variable for the loop
For i = 3 to 9 'based on the picture, 3 to 9 are the 1 through 7 values
Cells(2,1).Value=Cells(i,1).Value 'pulls up Column A value from the loop to Row 2
Cells(2,2).Value=Cells(i,2).Value 'pulls up Column B value from the loop to Row 2
Cells(2,3).Formula="=A2+B2" 'Sums A2 and B2 into C2
Cells(2,3).Copy Cells(i,3) 'Copies the summed value to Row "i" in Column C
Next i 'Moves to next "i" in the loop
请告诉我这是否更符合您的观点。
编辑:
对于动态范围,您仍然知道自己的起点。你会看到类似的东西:
Dim i as Integer
Dim LR as Long
Dim LC as Long
LR=Cells(Rows.Count,"A").End(xlUp).Row
LC=Cells(1,Columns.Count).End(xlToLeft).Column
For i = 3 to LR 'Still starting at 3, because of the example
Cells(2,1).Value=Cells(i,1).Value
Cells(2,2).Value=Cells(i,2).Value
Cells(2,LC+1).Formula="=A2+B2" 'Note the LC+1 goes one row BEYOND the last column
Cells(2,3).Copy Cells(i,LC+1)
Next i
在上一个示例中,您可以看到动态范围的语法。请注意,LR和LC是在循环外定义的,并且在子程序的持续时间内不会改变。