我有數據如下搜索由列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行。
我被困在如何完成這個公式。謝謝。
我有數據如下搜索由列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行。
我被困在如何完成這個公式。謝謝。
嘗試這個公式:
=MAX(IF(IF(A1:A4=E1,B1:B4)<=F1,IF(A1:A4=E1,B1:B4)))
與陣列條目(CTRL + SHIFT + ENTER)。
由於@barry胡迪尼的意見建議,可以簡化公式:
=MAX(IF(A1:A4=E1,IF(B1:B4<=F1,B1:B4)))
與數組項。
由於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)
這個版本就足夠了 - '= MAX(IF(A1:A4 = E1,IF(B1:B4 <= F1,B1:B4)))' –
肯定!不知道我是如何錯過的:) –