如何使用VBA将Sheet1固定范围的迭代列复制到Sheet2的列区域?
Monte Carlo模拟结果转置输出的VBA实现方案
针对你需要将Sheet1中AG6:AG25区域的随机值(含RAND()函数)转置后逐行输出到Sheet2的需求,我写了这段VBA宏来完成5000次迭代的结果记录:
Sub MonteCarlo() Dim transposedVariant As Variant Dim sourceRowRange As Range Dim sourceRowRangeVariant As Variant Dim rangeFilledWithTransposedData As Range Dim i As Long Application.ScreenUpdating = False ' 关闭屏幕更新,提升运行效率 For i = 1 To 5000 ' 执行5000次迭代 ' 读取Sheet1中目标区域的最新随机数据 Set sourceRowRange = Sheets("Sheet1").Range("AG6:AG25") sourceRowRangeVariant = sourceRowRange.Value ' 将列格式的数据转置为行格式 transposedVariant = Application.Transpose(sourceRowRangeVariant) ' 定位Sheet2中要写入的目标行区域 Set rangeFilledWithTransposedData = Sheets("Sheet2").Range("A" & i & ":T" & i) ' 将转置后的数据写入目标行 rangeFilledWithTransposedData.Value = transposedVariant Next i Application.ScreenUpdating = True ' 恢复屏幕更新 End Sub
关键细节说明:
- 关闭屏幕更新是为了避免每次迭代时界面频繁刷新,能大幅提升宏的运行速度
- 每次循环都会重新读取AG6:AG25的最新随机值(因为RAND()函数会在每次计算时自动刷新)
- 用
Application.Transpose快速完成列转行的操作,比手动逐个单元格赋值高效得多 - 如果你需要调整迭代次数,直接修改
For i = 1 To 5000中的数字即可
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

