VBA:最多2列被发送到第三列

时间:2017-07-13 12:09:08

标签: excel vba excel-vba

我需要从两列获取最大值并将其发送到第三列。这些列的大小都是一致的,但有时大小会有所不同,但它们都会在同一个单元格中开始。例如:

5 8 -

6 2 -

6 5 -

带有破折号的列需要找到其他两个之间的最大值,完成的项目看起来像

5 8 8

6 2 6

6 5 6

我尝试录制一个宏但它使用的ActiveCell并不好。我希望这两个列是,例如,从C10开始的任何具有值的东西,以及从D10开始的所有值都有值,并且最大值发送到E10。

这是我录制的内容,尝试使用以下公式填充目标单元格:

ActiveCell.FormulaR1C1 = "=MAX(RC[-2],RC[-1])"
Selection.AutoFill Destination:=Range("E10:E300"), Type:=xlFillDefault

1 个答案:

答案 0 :(得分:3)

这是代码的一个很好的替代方法,只需确保声明与之比较的第一列。该示例适用于A列的前10个单元格:

Option Explicit

Public Sub SelectMax()


    Dim rngRange    As Range
    Dim rngCell     As Range

    Set rngRange = Range("A1:A10")

    For Each rngCell In rngRange

        'Without visible formula in Excel:
        rngCell.Offset(0, 2) = WorksheetFunction.Max(rngCell, rngCell.Offset(0, 1))
        'With visible formula in Excel
        rngCell.Offset(0, 2).FormulaR1C1 = "=MAX(RC[-2],RC[-1])"

    Next rngCell

End Sub

该示例在Excel中生成可见的公式。如果要忽略公式,请在第二个注释后删除该行,并且不会显示公式。