匹配列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
假设您在列A
和B
获得数据,并在单元格E3
(Var1)和E4
(Var2)中查找值,则可以使用以下函数根据所述条件返回列B
最大(最近)的值。
=ReturnNearest(A2:A5,B2:B5,E3,E4)