簡體   English   中英

使用 INDEX-MATCH 查找多個非精確條件 - 找到最符合條件的最近值的問題

[英]Lookups with Multiple Non-Exact Criteria using INDEX-MATCH - Problem finding nearest values that best meet conedition

我正在嘗試使用 INDEX-MATCH 使用多個非精確條件進行查找。 形式如下:

=INDEX(C314:C318;MATCH(1;(D314:D318>=G313)*(E314:E318>=G314);0))

標准是:大於或等於數量 X。

公式工作正常,但是當使用一長串值時,它沒有找到最佳匹配值,而是找到第一個符合條件的值。

例如。

條件 1 是:代碼“查找代碼等於 2055516” 條件 2 是:數字“查找值等於或大於 77” 條件 3 是:字母順序“查找等於或大於 H 的字母”

在我有很多值的大型數據集中,它只找到符合此條件的下一個最佳值。 滿足該條件的第一個值將是“80”和“R”,但是,在我的數據集中的值之后,下面的方式更符合那些“78”和“I”的標准。 我想這里的問題很明顯。

我如何調整我的公式來尋找那些更符合我的條件的值?

數據集表如下所示:

在此處輸入圖片說明

公式應返回最佳加工產品的名稱“A、B、C、D、E”。

我使用了一個名為Helper的輔助列,首先使用以下公式按字母順序排列Condition 2字母(將其向下拖動以應用於所有行):

=COUNTIF(Condition_2,"<="&Condition_2)

然后使用以下公式找到最佳匹配(雖然它是一個數組公式,但不需要通過Ctrl+Shift+Enter ):

=INDEX(Product1,MATCH(AGGREGATE(15,6,Helper/((Condition_1>=77)/(Condition_2>="H")),1),Helper,0))

用工作表中的實際范圍替換上述公式中的命名范圍

替換,; 作為適合您系統的所有公式中的分隔符。

解決方案

編輯#2

基於新的場景,這個問題可以通過AGGREGATE函數解決,只要查找值是一個數字( EAN

解決方案2

我上面例子的單元格J2中的公式是:

=AGGREGATE(15,6,EAN/((DIMENSION=F2)/(LOAD_INDEX>=G2)/(SPEED_INDEX>=H2)),1)

請注意,以下所有命名范圍都需要替換為工作簿上的實際范圍:

  • 尺寸B2:B8
  • LOAD_INDEXC2:C8
  • SPEED_INDEXD2:D8
  • EANA2:A8

如果您不想顯示錯誤#NUM! 如果沒有匹配的結果,您可以使用IFERROR返回一個空白單元格,如我示例的單元格J3所示。 公式為:

=IFERROR(AGGREGATE(15,6,EAN/((DIMENSION=F3)/(LOAD_INDEX>=G3)/(SPEED_INDEX>=H3)),1),"")

編輯 #3

請使用以下數組公式(需要按Ctrl+Shift+Enter 確認)在Helper列的幫助下找到最接近的LOAD INDEXSPEED INDEX匹配項。

{=INDEX(EAN,MATCH(AGGREGATE(15,6,Helper/((LOAD_INDEX/((DIMENSION=G2)/(LOAD_INDEX>=H2)/(SPEED_INDEX>=I2)))=AGGREGATE(15,6,LOAD_INDEX/((DIMENSION=G2)/(LOAD_INDEX>=H2)/(SPEED_INDEX>=I2)),1)),1),Helper/((LOAD_INDEX/((DIMENSION=G2)/(LOAD_INDEX>=H2)/(SPEED_INDEX>=I2)))=AGGREGATE(15,6,LOAD_INDEX/((DIMENSION=G2)/(LOAD_INDEX>=H2)/(SPEED_INDEX>=I2)),1)),0))}

解決方案3

邏輯是首先找到與LOAD INDEX最接近的匹配,然后從與LOAD INDEX最接近匹配的范圍中找到與SPEED LIMIT最接近的匹配。

如果您不想顯示#NUM! 沒有匹配結果的錯誤,您可以使用IFERROR返回所需的結果。

如果有任何問題,請告訴我。 干杯:)

這可能通過更聰明的方法來完成,但以下對我有用:

在此處輸入圖片說明

G2公式,按照上述示例數據返回具有最佳匹配的行:

=INDEX(A2:A6,MATCH(SMALL(IF(B2:B6-E2>-1,B2:B6-E2+IF(CODE(C2:C6)-CODE(F2)>-1,CODE(C2:C6)-CODE(F2),""),""),1),IF(B2:B6-E2>-1,B2:B6-E2+IF(CODE(C2:C6)-CODE(F2)>-1,CODE(C2:C6)-CODE(F2),""),""),0))

注意通過Ctrl + Shift + Enter作為數組公式輸入

當沒有條件匹配時,它將返回錯誤,您可以通過IFERROR()捕獲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM