【问题标题】:VBA Code- Flow Loop through range of dataVBA代码流循环遍历数据范围
【发布时间】:2017-07-25 06:56:41
【问题描述】:

我对 VBA 非常陌生,需要帮助。我已经建立了一个传统的输入输出 excel 模型(传统 excel 中的电子表格计算,而不是 VBA。)我有一系列大约 200,000 个数据点,我需要为这些数据点连续提取 8 个单元格的值(替换 Sheet 1 单元格A1 与值 Sheet2 值单元格 B1),拉出结果,并遍历剩余的 200,000 行。有没有人可以指导我这样做?

我使用以下代码运行了一个宏来反映第一行的替换。我现在需要它遍历剩余的列:

Sub PermutationResults2()
'
' PermutationResults2 Macro
'

'
Sheets("Investments").Select
Range("I9").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[20]C[-8]"
Range("I10").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[19]C[-8]"
Range("I11").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[18]C[-8]"
Range("I12").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[17]C[-8]"
Range("I13").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[16]C[-8]"
Range("I14").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[15]C[-8]"
Range("I15").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[14]C[-8]"
Range("I16").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[13]C[-8]"
Range("I17").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[12]C[-7]"
Range("J9").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[20]C[-7]"
Range("J10").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[19]C[-7]"
Range("J11").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[18]C[-7]"
Range("J12").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[17]C[-6]"
Range("J13").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[16]C[-6]"
Range("J14").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[15]C[-6]"
Range("J15").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[14]C[-6]"
Range("J16").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[13]C[-6]"
Range("J17").Select
ActiveCell.FormulaR1C1 = "=' Monte Carlo Data'!R[12]C[-5]"
Range("J18").Select
End Sub

【问题讨论】:

  • 你能分享一些示例数据吗?
  • 旁注:我不建议阅读和关注VBA Best Practices,尤其是关于如何避免使用 Select 和 ActiveCell 的部分。
  • @progsnob 我刚刚添加了一张带有数据的图像。基本上,如果您可以想象获取这些数据并用列出的这些数据替换单独的单元格值(大约有 200,000 行)。然后在另一张纸上,这将返回 ROE。我需要更换单元格,然后继续下一行,拉 ROE 并再次循环。这有意义吗?
  • @RachelAnn 看起来你也在颠倒数据的顺序,这是你想要的吗?

标签: vba excel


【解决方案1】:

让我们开始吧

   Sub Demo
     Dim r as range
     dim t  as range
     Set r = Sheets("Investments").Range("I9")  'point to your start cell
     set t = sheets(" Monte Carlo Data").range("I9")  'pointer to your destination
      Do Until r = ""  'keep going till you find a blank cell
          t = r  'copy value in r into t
          set r = r.offset(1,0) 'move pointer down one
          set t = t.offset(1,0)  'ditto for the other pointer
      Loop
 end sub

现在玩它,直到它完成你想做的事情

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2016-12-21
    相关资源
    最近更新 更多