【问题标题】:Excel VBA Loop to Sum two consecutive cellsExcel VBA循环对两个连续单元格求和
【发布时间】:2016-02-23 19:55:22
【问题描述】:

我是在 Excel 中使用 VBA 的新手,在尝试创建一个循环以将两个连续数字相加并将其输出到侧面的合并单元格时遇到了困难。数据如下:

Number    -   Sum
  1       -   8 
  7       -    
  1       -   2 
  1       -    

所以我想循环遍历第 1 列中的数字并将前 2 个数字(1 和 7,即单元格 A1 和 A2)相加,然后将该值返回到其右侧的合并单元格,即B1。

以下是我目前所拥有的,它确实正确计算了单元格 A1 和 A2,并将 8 的值放入单元格 B1 中,但随后根本不起作用。之前我有一个循环来计算单独行中的 2 个值,但我不知道在这种情况下如何做到这一点。

Sub Loop_Sum()
Set rng = Range("A1:A6")
For Each cell In rng
Cells(cell, 2) = Cells(cell, 1) + Cells(2, cell)
Next cell
End Sub

感谢任何帮助/指针。

谢谢。

【问题讨论】:

  • 它必须要vba吗,这样的事情可以用公式很容易地完成。

标签: vba excel


【解决方案1】:

您需要更改为递增的 For .. 接下来将递增步进 2。

Sub Loop_Sum()
    dim i as long, rng as range    
    Set rng = Range("A1:A6")
    For i= 1 to rng.cells.count step 2
        rng(i).offset(0, 1) = rng(i) + rng(i + 1)
    Next cell
End Sub

【讨论】:

  • 啊,是的,旧的非单眼范例。很好的收获,谢谢!
【解决方案2】:

你想使用偏移功能:

Sub Loop_Sum()
Set rng = Range("A1:A6")
For Each cell In rng
    If cell.Row Mod 2 = 0 Then 'Change 0 to 1 if it ends up on the worng row.
        cell.Offset(, 2) = cell + cell.Offset(1)
    End If
Next cell
End Sub

如果你想要一个公式,那么把它放在 C2 中:

=If(mod(row(),2)=0,A2+A3,"")

然后抄下来。

【讨论】:

  • 你会如何通过公式来做到这一点?
  • 不要认为你甚至需要MOD function。 B列中的单元格应该被合并;我假设 B1:B2 然后 B3:B4 等。只需填写 =A1+A2 即可。
  • @Jeeped 啊错过了。你是对的,它应该就这么简单。
猜你喜欢
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 2015-10-07
  • 1970-01-01
相关资源
最近更新 更多