我需要从两列中获取最大值并将其发送到第三列。这些列的大小都是统一的,但有时大小会有所不同,但它们都将从同一个单元格开始。例如:
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
最佳答案
这是您的代码的一个很好的替代方案,只需确保声明您比较的第一列。该示例适用于 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 中创建了一个可见的公式。如果要忽略公式,请删除第二条注释后的行,公式将不会出现。
关于VBA:最多 2 列被发送到第三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45080191/