2014-03-29 36 views
1

我有數據如下搜索由列B最近的(低級)值A

SHEET 1:

A  B  
K01 0.5 
K01 0.8 
K02 0.6 
K03 0.6 
.... 

我需要從列B,其中我公司供應的最低最接近的值例如:如果提供的值是var1 ='K01'和var2 ='0.6',則結果公式應返回上面示例中的第1行。

我被困在如何完成這個公式。謝謝。

回答

1

嘗試這個公式:

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

與陣列條目(CTRL + SHIFT + ENTER)。

enter image description here

由於@barry胡迪尼的意見建議,可以簡化公式:

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

與數組項。

+1

這個版本就足夠了 - '= MAX(IF(A1:A4 = E1,IF(B1:B4 <= F1,B1:B4)))' –

+0

肯定!不知道我是如何錯過的:) –

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)