2017-05-14 6 views
0

私は2列のデータを持つGoogleシートを持っています。 Aは、(粗いタイムスタンプに基づいて)多くの重複で単調に増加しますが、Bは本質的にランダムです。未来のデータを待っている最下行には多くの空の行があります。それは次のようになります。Googleスプレッドの集計計算の範囲内の最後の値を除外

 A B 
1 5 43 
2 5 77 
3 13 8 
4 21 34 
5 27 68 
6 27 90 
7 
8 
9 
10 

私は最後の1以外の列中(空でない)値のすべてを調べ、いくつかの数式を書きしようとしています。たとえば、最新の値を除いてBの最大値を探したいので、90からB6の代わりに77からB2に結果が得られるはずです。

範囲内の値が厳密に増加し、ユニークされた場合、私は最大値(最後のエントリ)に等しい任意の値を除く、CAの値をフィルタリングし、その範囲のMAX(..)を取ることができます。しかし、私のデータにはそのプロパティがありません。最終的な値が複製され、重複が不適切に無視される可能性があります。

 A B C D        E 
1 5 43 9 =MAX(FILTER(C:C, A:A <> "")) Value of index in last populated row. 
2 5 77 10 =MAX(FILTER(A:A, C:C < D1)) Maximum value from a row with lower index. 
3 13 8 11 
4 21 34 12 
5 27 68 13 
6 27 90 14 
7   15 
8   16 
9   17 
10   18 

しかし、私は、元のスプレッドシートを修正する必要はありません解決策を探しています、ので:私たちが使用するインデックスを増分の第3列があった場合

 C        D   E 
1 =FILTER(A:A, A:A < MAX(A:A)) =MAX(C:C) This produces A4's 21 instead of A5's 27. 

同様のアプローチが働くだろうそれはいつも可能ではありません。それはIndexSheetが同じ行数を持つことが必要ですので、私はちょうど...インデックス列が、何も新しいIndexSheetを作成し、この代わりに...

 A B C 
1 5 43 =MAX(FILTER(IndexSheet!A:A, A:A <> "")) 
2 5 77 =MAX(FILTER(A:A, IndexSheet!A:A < C1)) 
... 

のようにそれを参加することはできませんより多くのデータが追加されると中断されます。

元のデータシートを変更したり、データのプロパティ(値が数値であり、行が空であるか完全でない)に頼らずに、最後の値を除外して範囲で集計を実行する方法はありますか?

答えて

1

あなたが最後の行

=max(indirect("A1:"&Address(count(A:A)-1,1))) 

count関数は最後の行を除外するために1を減算列A内の非空のセルの数を与える除くダイナミックレンジを作成するindirectaddress数式を使用することができます。あなたはあなたの例の場合に決定するために間接的な方法indirect(A1:$A$5)を使用してセルを参照してmax関数への参照を渡すために、この文字列をA1:$A$5

使用する必要があります"A1:"&address(row no, Col no)を使用してアドレスを構築するために、その番号を使用し

その範囲の最大値。

別のシートトライから
1

:私たちは、非空の行の行番号の配列を取得するためにFILTER(ROW(DATA!A:A), Data!A:A <> ""))を使用

D 
1 =MAX(FILTER(Data!A:A, 
       ROW(Data!A:A) < MAX(FILTER(ROW(Data!A:A), 
              Data!A:A <> "")))) 

=MAX(Sheet1!B1:indirect("Sheet1!B"&count(Sheet1!B:B)-1)) 
0

私たちは、これを達成するためにFILTER()ROW()機能を使用することができます最後の行番号を取得するにはMAX(...)を使用します。 FILTER(Data!A:A, ROW(Data!A:A) < ...)を使用して、低い行番号の値をフィルタリングして最後の行を除外します。このフィルタリングされた配列にMAX(...)を適用し、我々が探していた結果を得る。

関連する問題