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

我有如下数据

表1:

AB K01 0.5 K01 0.8 K02 0.6 K03 0.6 .... 

我需要从col B得到最低的最近值,我提供col A和最近的(较高的)值来匹配col B.

例如:如果提供的值是var1 ='K01'和var2 ='0.6',那么结果公式应返回上面示例中的第1行。

我坚持如何完成这个公式。 谢谢。

试试这个公式:

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

与数组项( CTRL + SHIFT + ENTER )。

在这里输入图像说明

正如@barry houdini在评论中所build议的那样,您可以简化公式:

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

与数组input。

由于Excel中的查找和匹配function不返回数组,我相信解决这个问题的最好方法是使用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)