2016-12-15 22 views
1

我在寫一張表格,我試圖創建一個多層索引,通過5個不同的列搜索3個數據。因此,例如:Google表格中的多層次和多參數索引

x = 40 
y = 5000 
z = 20000 

Column1 | Column2 | Column3 | Column4 | Column5 | Column6 
13  | 29  | 0  | 0  | 0  | Yes 
30  | 870  | 0  | 0  | 0  | No 
10  | 870  | 0  | 30000 | 1  | Blue 
10  | 870  | 30001 | 100000 | 1  | Yes 
10  | 870  | 100001 | 300000 | 1  | Unknown 

這裏是我的數據,我需要的樣本集比較

  • 變量x 1列,然後2(x必須在這些值之間下降)
  • 變量y以3和4欄(Y必須在這些值之間的下降)
  • ,然後最終Z到柱5(Z必須高於這些值)

在每種情況下,我需要知道該變量是低於還是高於。最後,我需要第6欄的匹配數據作爲結果返回到我的工作表中。目前,我有一個簡單的IMMENSE嵌套if語句列表,它們分別考慮了所有這些條件,但當需要對值進行更改時,它不適合編輯。

我已經看過互聯網上的每一個頁面(每...單...頁...),似乎無法找到解決我的問題。我發現的大多數解決方案都是使用單個數據點,在一個範圍內使用多個數據點,或者根本看不出工作。我已經嘗試了最新的迭代:

=INDEX('LTV Data'!$N$3:$N$10, MATCH($D$5 & $G$8 & $G$12, ARRAYFORMULA($D$5 <= 'LTV Data'!$H$3:$H$10 & $D$5 >= 'LTV Data'!$I$3:$I$10 & $G$12 <= 'LTV Data'!$J$3:$J$10 & $G$12 >= 'LTV Data'!$K$3:$K$10 & $G$8 <= 'LTV Data'!$L$3:$L$10), 0), 7) 

但這只是產生一個錯誤,因爲不同的值我想測試對被連接和匹配無法找到該字符串。我也不確定關於語法的有效性的大於和小於符號。是否有人能夠闡明我如何以更加優雅的方式實現我所需要的結果,而不是我現在擁有的IFS,ANDS + ORs的質量?就像我說的那樣,但它確實不太好;)

感謝一堆提前!

ETA:所以對於上面的變量,我想要的結果是'Blue'。這是因爲x落在第1列和第2列之間,y落在第3列和第4列之間,z高於第3列的第5列。這些都包含在上面示例代碼中的MATCH語句中。請參閱MATCH聲明以查看我正在嘗試進行的比較。

+0

因此,正如我在所提供的示例代碼中所寫,在每種情況下,我需要測試給定變量是高於還是低於每列中的數字。 – jaeger138

+0

我已經添加了進一步的細節問題,但本質上我有三個變量,我想要使用大於或小於運算符來針對不同列測試每個變量,並且如果單個行的所有五列都爲true,則返回單個匹配結果在第6列中 – jaeger138

回答

3

你需要把不同的標準一起使用乘法,如果你想要得到的效果,在數組:

=INDEX(F2:F10,MATCH(1,(A2:A10<x)*(B2:B10>x)*(C2:C10<y)*(D2:D10>y)*(E1:E10<z),0)) 

=INDEX(F2:F10,MATCH(1,(A2:A10<=x)*(B2:B10>=x)*(C2:C10<=y)*(D2:D10>=y)*(E1:E10<=z),0)) 

,包括平等的(我有使用x,y和z的命名範圍)。

適用於Google表格和(如果作爲數組公式輸入)Excel。

在谷歌表,你也可以選擇使用過濾器

=filter(F2:F10,A2:A10<=x,B2:B10>=x,C2:C10<=y,D2:D10>=y,E2:E10<=z) 

的選項,但你不能保證得到的只是一排。

+1

在'array_constrain()'中包裝過濾器最多可以確保一行。 – FTP

+0

這很有用,謝謝 –

+0

我實際上已經嘗試過類似於以前的迭代,我遇到的問題是Google表格告訴我'MATCH評估中無法找到值'1'。經過一番搜索,我發現這是Excel和Sheets之間的區別,我不得不在工作表中找到替代解決方案。我還嘗試了上面發佈的FILTER版本,用ARRAY_CONSTRAIN包裝它,我被告知沒有匹配被發現,儘管我的IF語句版本中找到匹配!非常令人沮喪...... – jaeger138