有没有办法使用标准 Excel 函数获取一系列值中的最大值?
更多信息
- 我想找到单元格范围内的最大值。 答案1:
=max(A2:A10)
- 但是,我不想在单元格本身中找到最大值,而是想通过对这些单元格执行 vlookup 来获取一组相关值。即B2:
=vlookup(A2,MyLookupName,2,false)
(将 B2 公式复制到 B10)。 答案1:=max(B2:B10)
。 - 我宁愿使用一个公式在同一个单元格中一次性应用这两个步骤,而不是分两步执行此操作(即在 B 列中进行 vlookup,然后在单元格 A1 中对其求最大值)。即答案1:
{=max(vlookup(A2:A10,MyLookupName,2,false))}
但是,最后一个公式不起作用,因为 VLOOKUP 函数只接受单个单元格作为参数Lookup_Value
;如果传递了范围,它会从该范围中取左上角的单元格。
VBA 解决方案
为了更好地说明我所追求的功能,我编写了一个 VBA 工作表函数来执行我所追求的功能;但我试图避免使用自定义宏。
Public Function MaxVLookup(ByRef Lookup_Array As Range, ByRef Table_Array As Range, Col_Index_Num As Long) As Variant
Dim v As Variant, temp As Variant, max As Variant
max = Null
For Each v In Lookup_Array
temp = WorksheetFunction.VLookup(v, Table_Array, Col_Index_Num, False)
If IsNull(max) Then
max = temp
Else
If max < temp Then
max = temp
End If
End If
Next
MaxVLookup = max
End Function
答案1
如果 A 中的值仅出现在参考区域中一次,那么您可以使用包裹在 MAX() 中的 SUMUIF() 作为数组公式:
=MAX(SUMIF(D:D,A1:A10,E:E))
作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而不是 Enter 进行确认。如果操作正确,Excel 会将{}
公式放在一边。
如果它们是多个而您只想要第一个像 VLOOKUP,请使用 LOOKUP():
=MAX(IFERROR(LOOKUP(A1:A10,D1:D13,E1:E13),-1E+99))
这又是一个数组公式。
作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而不是 Enter 进行确认。如果操作正确,Excel 会将{}
公式放在一边。
根据示例的截图