Excel添加多行

时间:2012-07-28 23:54:15

标签: excel range rows

有快速的方法吗?

例如我有两行

A B

34 5
56 6
34 3
25 2

我想在行下面进行以下计算。

A1 = A1 + B1
A2 = A2 + B2
A3 = A3 + B3 ..
..

现在我可以用一个循环通过像

这样的行的宏来做到这一点
for x = 1 to 500
sheet1.cells(x,1).vlaue = sheet1.cells(x,1).vlaue + sheet1.cells(x,2).vlaue
next x

但是通过使用范围或其他可以作为单个步骤执行的操作,有更有效的方法吗?

干杯

3 个答案:

答案 0 :(得分:3)

快速方法是从即时窗口进入:

[a1:a500]=[a1:a500+b1:b500]

方括号是Evaluate函数

的快捷方式

答案 1 :(得分:1)

我可以想到两个选择:

选项1

使用CopyPaste SpecialAdd

Sub AddStep()
    Dim rng1 As Range, rng2 As Range

    Set rng1 = Range([A1], [A1].End(xlDown))
    Set rng2 = rng1.Offset(, 1)
    rng2.Copy
    rng1.PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd
    Application.CutCopyMode = False

End Sub

选项2

循环变量数组。这比在一个范围内循环

更快
Sub AddStep()
    Dim rng As Range
    Dim dat As Variant
    Dim i As Long

    Set rng = Range([B1], [A1].End(xlDown))
    dat = rng
    For i = LBound(dat, 1) To UBound(dat, 1)
        dat(i, 1) = dat(i, 1) + dat(i, 2)
    Next
    rng = dat
End Sub

选项1更快,但在某些情况下最好避免使用剪贴板 测试了1,000,000行的样本:
    选项1 - 435ms
    选项2 - 2589ms

答案 2 :(得分:0)

我这样做的方法是为第一行创建一个公式,然后选择之后的所有行,然后按Ctrl+D。这不是你想要的吗?除非我误解了这个问题。