当我不知道范围的结束时,我想在电子表格中找到一个单元格范围的最小/最大/平均值等。
在我的宏中我使用了以下代码:
Raw1.Range("H4").Value = Application.WorksheetFunction.Max(Range(Sheets("Raw").Range("A3"), Sheets("Raw").Range("A3").End(xlDown)))
我想用different than this,因为这给了"一个值"。每次运行代码。
我希望H4的值在每次A3的值变化时都改变,而不必运行宏。所以更像是一个公式。
类似:
Raw1.Range("H3").Value = "= Min((A3:A & Range.End(xlDown).Row))"
由于您不希望主动运行宏,因此下面的建议在Worksheet_Change()
事件过程中编码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("A:A"), Target) Is Nothing Then
If Target.Cells.Count > 1 Then Exit Sub
Dim lastCell As Long, pos As Long, formulaCell As Range
Set formulaCell = Range("H4")
lastCell = Cells(Rows.Count, 1).End(xlUp).Row
pos = InStr(1, formulaCell.Formula, "(") - 1
formulaCell.Formula = Left(formulaCell.Formula, pos) & "(A2:A" & lastCell & ")"
End If
End Sub
它以OP中的示例为前提,因为有问题的单元格包含一个简单的公式(即引用单元格的地址在现有公式的第一个(
之后,并且除了此引用之后的)
之外什么都没有),每当检测到列a中的变化时,事件过程将更新的范围引用。