
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 番目の出現を検索します。
これが人々の役に立つことを願います。そしてエクセルジェット素晴らしいサイトです。強くお勧めします。
答え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
、残りのセルには2007
が2010
続きます。#N/A
値を表示したくない場合は#N/A
、IFERROR
関数を使用して値を空白に変更できます。
答え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 エラーを空白に置き換えます。