我有一个包含一系列计算的电子表格。我有一个结果单元格,它取决于所有计算。我写了一个宏:
- 询问用户两个数字之间的范围
- 生成两个数字之间间距为 0.5 的范围
- 对于每个数字,将此数字添加到指定单元格并等待处理
- 将结果单元格复制到摘要单元格
- 对范围内的所有数字重复
这个例程中的第四点是我唯一的问题。我似乎无法将每个循环的结果粘贴到不同的单元格中。例如,对于 1 到 3 之间的范围,我应该有 5 个值。我希望将这些值粘贴在其压力值旁边。
Sub pressureOptimization()
'
' pressureOptimization Macro
'
p1 = InputBox("Give lower pressure limit")
p2 = InputBox("Give higher pressure limit")
Application.ScreenUpdating = False
For StartNumber = p1 To p2 Step 0.5
Range("D21").Select
ActiveCell.FormulaR1C1 = StartNumber
Range("C34").Select
Selection.Copy
Sheets("Result").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Main Simulation").Select
Next StartNumber
Application.ScreenUpdating = True
End Sub
这在 Python 中相当简单,但在 VBA 中则稍微复杂一些。有任何想法吗?
最佳答案
我对你的代码有点困惑,如果你想将它粘贴到压力值旁边,我不知道你为什么要粘贴 Results!C2 。下面的代码将其放在 StartNumber 变量单元格旁边,我假设这些单元格位于主模拟表上。
Sub pressureOptimization()
'
' pressureOptimization Macro
'
Dim x As Integer
p1 = InputBox("Give lower pressure limit")
p2 = InputBox("Give higher pressure limit")
Application.ScreenUpdating = False
x = 0
For StartNumber = p1 To p2 Step 0.5
Sheets("Main Simulation").Cells(21 + x,4).Value = StartNumber
Sheets("Main Simulation").Cells(21 + x,5).Value = Sheets("Result").Range("C34").Value
x = x + 1
Next StartNumber
Application.ScreenUpdating = True
End Sub
如果 Results!C34 仅从“主模拟”!D21 进行更新,那么我建议直接在代码中执行 Results!C34 正在执行的任何结果计算。但是,如果没有有关单元格中的内容以及工作表如何工作的更多详细信息,很难为您提供有关如何使其工作的准确答案。
关于Excel VBA,用于更改变量并粘贴其结果的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35431511/