匹配col A后,从col B中查找最接近(较低)的值

时间:2014-03-29 07:07:24

标签: excel lookup

我的数据如下

表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行。

我很困惑如何完成这个配方。感谢。

2 个答案:

答案 0 :(得分:1)

试试这个公式:

=MAX(IF(IF(A1:A4=E1,B1:B4)<=F1,IF(A1:A4=E1,B1:B4)))

带数组条目( CTRL + SHIFT + ENTER )。

enter image description here

正如@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

假设您在列AB中获得了数据,并且您的查找值位于单元格E3(Var1)和E4(Var2)中,那么您可以使用跟随函数根据描述的标准返回列B中的最大(最近)值。

=ReturnNearest(A2:A5,B2:B5,E3,E4)