web-dev-qa-db-ja.com

重複のあるExcelの大関数

LARGE関数を適用して、重複を無視して列から最大の5つの値を取得しようとしています。私はいくつかの検索を行い、いくつかの提案された解決策を見つけましたが、それらは私にとってはうまくいかないようです。私の実際のアプリケーションでは、範囲は配列数式によって検出されるため、非配列数式がここで機能するかどうかはわかりません。私の元の関数は、{= LARGE(IF($ A:$ A = $ A2、$ B:$ B)、2)}を列の下にドラッグしました。 2を3番目に大きい場合は3に、4番目に大きい場合は4に置き換えます。これは、重複する場合を除いて機能しました。

例えば:

データは列1にあり、目的の出力は列2にあります。

1    5 
2    4
2    3
3    2 
3    1
3
4
4
5

私が試したこと:

  1. {= LARGE(IF(A:A <LARGE(A:A、i-1)、A:A)、1)}は、i番目に大きい値です。

    -これを入力すると、i = 3とi = 4の両方に3が与えられます。

  2. = LARGE(A:A、COUNTIF(A:A、MAX(A:A))+ 1)

    -これはLARGE(A:A、2)と何ら変わらないようです

  3. {= MAX(IF(A:A <LOOKUP(9.99999999999999E + 307、A:A)、A:A))}

    -これは値4を取得しますが、k番目に大きい値に一般化する方法がわかりません。

VBAソリューションも問題ありません。自分でコーディングしようとしましたが、配列数式IF($ A:$ A = $ A2、$ B:$ B)でコーディングする方法がわかりませんでした。

3
learningAsIGo

B1に次のように入力します。

=LARGE($A$1:$A$9,1)

B2配列式を入力します。

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

コピーしてください。 配列数式は次のように入力する必要があります CtrlShiftEnter だけでなく Enter キー。

enter image description here

基本的に、以前に見つかったアイテムをLarge()/ Max()の範囲から除外します。

2
Gary's Student