2017-01-05 5 views
2

標準のExcel関数を使って複雑な一連の配列の組み合わせを1つの式(VBAやUDFは関係ありません)式。どのように私は4、(この例では最初の非ゼロの数字を取得することができ、Excelの数式を使用してExcel>ソートされていない配列の最初でない/ゼロでない最初の値を見つけよう

{0,0,0,4,0,6,7...}

:私は今、この配列のうち一つだけ番号を引っ張って式1つの最終工程を追加する必要があります)の配列への参照はありませんか?ソースデータからこの配列を生成するのに必要な計算が複雑であるため、同じ式でこれを2回実行しないでください。

私は必要な結果を得るために配列に適用できる関数や演算子を探しています。理想的にはエレガントでシンプルなものです。 MATCHおよびLOOKUPは、配列のソートが必要なため失敗します。 MINは、最小値が0ではないために失敗します。

NB:非ゼロ数値の値も配列内の位置に対応しています(最初は1、2番目は2など)。したがって、最初の非ゼロ数は常に最小になります。

+0

この配列をどのように達成したか分かりますか?別の数式の結果ですか? – nightcrawler23

+0

@ nightcrawler23 - この例では、7行(実際にはるかに大きい)のテーブルを考えます。残りの数式は、テーブルから異なる列を取得し、それらを比較してどの行を探しているかを判断するため、{0,1,1,1,1,1}に{1、 0,1,1,1,1,1}と{0,0,0,1,1,1,1}等の値をとり、最終的に行番号{1,2,3,4,5 、6,7}を使用して、関連する一致する行の索引を決定します。セルに結果が得られると、右のすべてのセルは通常のINDEX(MATCH())関数にこのインデックスを使用できます。 –

答えて

2

は、答えは0.25であるので、それはエラー値を無視して逆数の最大値を見つけ、この

=1/AGGREGATE(14,6,1/{0,0,0,4,0,6,7},1) 

を試してみてください。そしてそれはそれの逆数です。

+0

ありがとう!以前は 'AGGREGATE'関数について聞いたこともありませんでした。実際には、= 1/MAX(IFERROR(1/{0,0,0,4,0,6,7}))を使ってこれを解決しました。これはあなたがここでやったこととほぼ同じですが、1つではなく2つの関数を使用しています。間もなく '全体的なもの 'を手に入れようとする... –

関連する問題