範囲内の一致する数字/データをすべて見つける方法

範囲内の一致する数字/データをすべて見つける方法

MAX の数字と、それが関連する年を見つけようとしています。

  • 2000年~2010年(A1:J1)
  • データ (A2:J2)
  • データの最大値はA3に配置される

INDEX/MATCH を使用すると、データの最大値と一致する最初の最大年を取得できますが、この最大数値は複数の年に表示される可能性があります (例: 2002、2005、2009)。

B3での最初の最大年

C3 に、(OFFSET, 0, B3) を使用して別のインデックス マッチを開始し、FIRST MAX YEAR の後に検索を開始する数式がありますが、何らかの理由で最初に遭遇した年が返されます。

=INDEX(A1:J1,MATCH(A3,OFFSET(A2:J2,0,MATCH(B3, A1:J1,0))))

数値を四捨五入して小数点 1 桁になるようにしましたが、範囲 A2:J2 内に 2 つの一致する DATA 数値の最大値があることがわかります。

更新: よりわかりやすく説明するための画像です。

最大値を持つ年を見つける 何か案は?

ありがとう、マイケル


答え:

私は以下のコメントにある Abdul のリンクをたどって、私の要件を非常によく満たす式を見つけました。

=IFERROR(INDEX(A1:K1,SMALL(IF(A2:K2=$A$3,COLUMN(A2:K2)-COLUMN(INDEX(A2:K2,1,1))+1),nth)),"")

n 番目のセルは 2 番です。つまり、A3 セルの 2 番目の出現を検索します。

これが人々の役に立つことを願います。そしてエクセルジェット素晴らしいサイトです。強くお勧めします。

インデックス一致で n 番目の一致を取得

答え1

これは、B3、C3 などにのみ入力された数式で実行できます。ただし、数式を読みやすくするために、ヘルパー行 (行 4) を追加することをお勧めします。

セルB4に次のように入力します。

=MATCH($A3,OFFSET($A2:$K2,0,A4),0)+A4

これは6、行 2 で 19.0 が最初に出現する列番号を返します。この数式を右にコピーすると、残りのセルに と が続きます。次に、セル B3 に入力し8ます11#N/A

=INDEX($A1:$K1,B4)

数式を右側にコピーします。最大値が見つかった年が表示されます: 2005、残りのセルには20072010続きます。#N/A

値を表示したくない場合は#N/AIFERROR関数を使用して値を空白に変更できます。

答え2

Blackwood の回答は配列数式を必要としないので気に入っています。ただし、ヘルパー行を使用できない場合、または 1 つの数式だけでこれを行う必要がある場合は、A4 でこれを使用して右側に入力できます。

 =IFERROR(SMALL(IF($A$2:$K$2=$A$3,$A$1:$K$1),COLUMN()),"")

これは配列数式なので、CTRL Shift Enterだけではなく と一緒に入力する必要がありますEnter

これがどのように機能するかを説明します。IF() は、データが A3 (データの最大値) に一致する年の配列を生成し、それ以外の場合は FALSE になります。

{False;False;False;False;False;2005;False;2007;False;False;2010}

そして、SMALL() は、列番号をインデックスとして使用して、その配列から 1 番目、2 番目、3 番目などの最小値を選択します。数値のみをチェックし、配列内の「False」値は無視します。

最後に、IFERROR() は #N/A エラーを空白に置き換えます。

関連情報