如何在范围内循环方程式?

时间:2019-05-21 00:48:52

标签: excel vba

我正在将按钮插入到我的excel程序中。我想做两件事:首先遍历范围内的每一行,并使一列中的单元格(I)等于另一列(H);其次,我希望第一列(H)重新计算。

我已经能够使它工作一行,但是我一直在努力使其遍历整个范围,并且需要一些帮助。

Sub Button3_Click()

Worksheets("data").Range("i17").Value = Worksheets("data").Range("h17").Value
    Range("h17").Calculate

End Sub

我正在寻找一种实现上述目的的方法,但是要考虑范围(i17:列的结尾)。 :-/

2 个答案:

答案 0 :(得分:0)

使用以下命令复制值。

Worksheets("data").Range("i17").Resize(n,1).Value = _
                               Worksheets("data").Range("h17").Resize(n,1).Value

其中n是受影响的行数。

然后您可以使用重新计算

Worksheets("data").Range("h17").Resize(n,1).Calculate

另外要找到n,请使用以下内容

Dim r as Range, n as Long
Set r = Worksheets("data").Range("h17")
n = r.Worksheet.Range(r, r.End(xlDown)).Rows.Count

r.Offset(0,1).Resize(n,1).Value = r.Resize(n,1)
r.Resize(n,1).Calculate

答案 1 :(得分:-1)

下面的代码将在H列中找到最后一行数据,并将使用范围内的所有值设置为等于H列,然后重新计算。

Sub Button3_Click()

With worksheets("data")

    Dim lr as Long
    lr = .Cells(.Rows.Count,"H").End(xlUp).Row

    With .Range("I17:I" & lr)
         .value = .offset(,-1).Value
         .calculate 
    End With

End Sub