最大値、N 番目に大きい値、およびその前の値を検索しますか? (重複を無視しながら)

最大値、N 番目に大きい値、およびその前の値を検索しますか? (重複を無視しながら)

たとえば、次のような列 A があります。

I
15
0
3
15
M
8
0
8
21
Q
0
5
0
0

最大値を見つけるには=MAX(A1:A100) 最小値を見つけるには=小(A1:A100,1)

最大の値の 1 つ前と、その前の値を見つけるにはどうすればよいですか。Large を使用して N 番目の値を呼び出すことはできますが、関数がカウントする N 個の値の数を調べて、最後の 3 つ (最大の値とその前の 2 つ) を参照する位置を知るにはどうすればよいですか。

重複を無視します。例では、最大値は 21、その前は 15、その前は 8 です。=LARGE(A1:A100,3) を実行すると、列に 2 つの値があるため 15 が返されます。そして、3 番目に大きい値として 8 を探します。

以下に、インターネット上の親切な人々がピボットテーブルと配列数式のソリューションを提供してくれたことを紹介します。そして、私は最終的に簡単な数式を作成することができました。

すべて揃っていると主張する場合は、この仕事に必要な VBA を提供できますが、そうでない場合は、すでに十分な量があります。

答え1

ピボットテーブルを使用すると、重複を取り除いたリストを簡単に作成できます(列を追加するだけです)。行ラベル)の場合は、重複排除されたリストで関数LARGEと関数を使用します。SMALL

=LARGE(D4:D9,3)

重複リストを除外するピボットテーブル

必要に応じて、ピボットテーブルを整理するために、総計切り替えフィールドヘッダーオフにすると、重複が除去されたリストのみが表示されます。

答え2

列にデータありのように:

ここに画像の説明を入力してください

B1入力:

=MAX(A:A)

B2配列数式を入力します:

=MAX(IF(A$1:A$10<B1,A$1:A$10))

コピーするB2必要なだけ下げてください。

配列数式キーだけではなく、Ctrl+ Shift+で入力する必要があります。EnterEnter

ここに画像の説明を入力してください

答え3

これまでに受けてきたすばらしいサポートのおかげで、ピボット テーブルと同じことができるのではないかと考え、次のようなアイデアを思いつきました (自分でも LOL)。

=IF(COUNTIF($A$1:A1,A1)<=1,A1,"")

関心のあるデータと平行な列を作成すると解決します。(例: C1 に貼り付けて下にコピーします)

これは、大規模なものから小規模なものまで、ベースにできる最初の重複除去リストを提供します。シンプルなソリューションなので、ドキュメント内で発生する可能性のある不安定な処理に干渉することはありません。また、私は VBA なしでも生きていけます。データ型が混在している場合、予期しない展開は IFERROR で抑制できるはずです。

答え4

@helena4 この配列数式を試してください

=LARGE(IF(A1:A15 < LARGE(A1:A15,1),A1:A15),3)

次に押すCtrl+Shift+Enter

重複は無視されます。

関連情報