我的数据如下
表1:
A B
K01 0.5
K01 0.8
K02 0.6
K03 0.6
....
我需要从col B获得最低的最近值,其中我提供col A和最接近的(更高)值以匹配col B.
例如:如果提供的值为var1 ='K01'且var2 ='0.6',则结果公式应返回上例中的第1行。
我很困惑如何完成这个配方。感谢。
答案 0 :(得分:1)
试试这个公式:
=MAX(IF(IF(A1:A4=E1,B1:B4)<=F1,IF(A1:A4=E1,B1:B4)))
带数组条目( CTRL + SHIFT + ENTER )。
正如@barry houdini在评论中建议的那样,您可以简化公式:
=MAX(IF(A1:A4=E1,IF(B1:B4<=F1,B1:B4)))
带数组输入。
答案 1 :(得分:0)
由于Excel中的查找和匹配函数不返回数组,我相信解决此问题的最佳方法是在VBA中使用用户函数。
如果您在VBA中的模块中插入以下代码,则应该能够按照问题中的描述从B列返回值。
Function ReturnNearest(ColA As Range, ColB As Range, Var1 As Variant, Var2 As Variant)
Dim LookupArr()
Dim i As Integer, ArrCount As Integer
ArrCount = 0
'Fills array with all valid solutions
For i = 1 To ColA.Rows.Count
If ColA.Cells(i, 1).Value = Var1 Then
If ColB.Cells(i, 1).Value <= Var2 Then
ArrCount = ArrCount + 1
ReDim Preserve LookupArr(1 To ArrCount)
LookupArr(ArrCount) = ColB.Cells(i, 1).Value
End If
End If
Next i
'Finds the largest value of the possible solutions
ReturnNearest = WorksheetFunction.Max(LookupArr)
End Function
假设您在列A
和B
中获得了数据,并且您的查找值位于单元格E3
(Var1)和E4
(Var2)中,那么您可以使用跟随函数根据描述的标准返回列B
中的最大(最近)值。
=ReturnNearest(A2:A5,B2:B5,E3,E4)