如何在VBA中获取行范围2:60和列范围D:H中单元格的最大值

时间:2014-01-07 10:02:32

标签: excel-vba row range max vba

我有一张Excel工作表,其中包含60行和7列的整数值。第一行是评论,前三列也是评论(我必须省略这些)。

所以,我想迭代列范围3:7(D:H)中的行范围2:60,以找到连续的细胞的最大值。回答第I栏中的细胞。

我所拥有的(简化视图):

       Test1  Test2  Test3  Test4
One    1      2      3      4
Two    5      6      7      8
Three  1      2      5      4
Four   1      7      3      4

我想拥有什么:

       Test1  Test2  Test3  Test4  Max
One    1      2      3      4      4
Two    5      6      7      8      8
Three  1      2      5      4      5 
Four   1      7      3      4      7

如果我手动创建一个宏,我会收到:

range("D2:I2").Select
range("I2").Activate
ActiveCell.FormulaR1C1 = "=MAX(RC[-5]:RC[-1])"

range("D3:I3").Select
range("I3").Activate
ActiveCell.FormulaR1C1 = "=MAX(RC[-5]:RC[-1])"

range("D4:I4").Select
range("I4").Activate
ActiveCell.FormulaR1C1 = "=MAX(RC[-5]:RC[-1])"

很酷......但我想通过一个循环迭代它。

我尝试了这个,但不起作用:

Sub max()
    For num = 2 To 4
        range("D&num:I&num").Select
        range("I & num").Activate
        ActiveCell.FormulaR1C1 = "=MAX(RC[-5]:RC[-1])"
    Next num
End Sub

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Simoco已经提到了代码中的错误。我还要补充一点,你应该避免使用.Activate。您可能希望看到THIS

最简单的方法是使用不使用循环的方法

Sub Sample()
    With ThisWorkbook.Sheets("YourSheetName")
        .Range("I2:I60").Formula = "=Max(D2:H2)"
    End With
End Sub