2016-12-15 7 views
1

3つのデータで5つの異なる列を検索するマルチレベルインデックスを作成しようとしているシートを作成しています。だから、例えば:ここで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 

は私のデータのサンプルセットは、私が必要なもの、だ列1、次に2(xは、​​これらの値の間に入る必要があります) に

  • に変数xを比較することです
  • 可変列3及び4にY(Yは、これらの値の間になければならない)
  • 後、カラム5に、最終的にZ(Zはこれらの値より上でなければならない)

これらのケースのそれぞれでは、変数がより低いかより高いかを知る必要があります。最後に、私のシートに結果として返されるカラム6からの一致するデータが必要です。現時点では、これらの基準すべてを別々に考慮するネストされたif文の単純なIMMENSEリストを持っていますが、値を変更する必要があるときには編集に非常に役立ちません。

私はインターネット上のすべてのページ(すべて...シングルページ...)を見てきましたが、私の問題の解決策を見つけることができないようです。私が見つけたほとんどのソリューションは、単一のデータポイントを使用しているか、単一の範囲に対して複数のデータポイントを使用しているか、単に機能していないようです。

=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:上記の変数を使用すると、結果は「青」になります。これは、xが列1と2の間にあり、yが列3と4の間にあり、zが第3行の列5よりも高いためです。これは、上記の例のコードのMATCHステートメントにすべて含まれています。私がしようとしている比較を見るには、MATCH文を見てください。あなたはANDアレイ内の効果を取得したい場合、乗算を使用して一緒に異なる基準を配置する必要があり

+0

提供されているサンプルコードで書いたとおり、それぞれの変数が各列の数字よりも高いか低いかをテストする必要があります。 – jaeger138

+0

私は質問に詳細を追加しましたが、本質的に私は3つの変数を持っています。演算子より大きいまたは小さい演算子を使用して異なる列に対してそれぞれの変数をテストしたいと思います。列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で動作します。 Googleシートで

あなたはまた、フィルタ

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

を使用するオプションを持っていますが、あなただけの1行を取得することは保証されません。

+1

'array_constrain()'にフィルタをラップすると、たいていの行が確実に確保されます。 – FTP

+0

これは有用です、ありがとうございます –

+0

私は実際にこれと同じような繰り返しを試していましたが、私が実行している問題はGoogleシートが「MATCH評価で値 '1を見つけることができませんでした。いくつかの検索の後、私はこれがExcelとSheetsの違いだと思っていました。シートの代わりの解決策を見つけなければなりません。私はまたあなたがARRAY_CONSTRAINをラップして上に投稿したFILTERバージョンを試しました。私のIFステートメントバージョンで一致が見つかったにもかかわらず一致するものは見つかりませんでした!非常にイライラする... – jaeger138

関連する問題