テーブル内で複数回出現する値の特定のインデックスを見つける方法

テーブル内で複数回出現する値の特定のインデックスを見つける方法

過去 30 日以内にAmountNamedRange対応する 2 番目に大きい金額のインデックスを検索する Excel 関数があります。DateNamedRange

=ArrayFormula(Match(Large(If(DateNamedRange > Today() - 30, AmountNamedRange, 0), 2), AmountNamedRange, 0))

これは、テーブルに同じ金額の行が他にない限り、十分に機能します。ただし、そのような行がある場合は、この式は初め過去 30 日間で 2 番目に大きい金額と同じ金額の行。説明がわかりにくいと思いますので、例を挙げます (今日が 2017 年 1 月 31 日であると仮定します)。

1    Date          Amount
2    12/2/2016     27
3    12/6/2016     66
4    12/15/2016    99
5    1/8/2017      45
6    1/20/2017     27
7    1/22/2017     18

この場合、過去 30 日間で 2 番目に大きい金額は 27 (インデックス 6) ですが、Matchテーブル内で金額に一致する最初の行を検索するため、数式ではインデックス 2 が返されます。正しく 6 を返すように数式を変更するにはどうすればよいでしょうか。

答え1

MATCHの 2 番目のパラメータとして使用したのと同じ式を使用する必要がありますLARGE。これにより、金額だけでなく、過去 30 日間の金額のみが検索されます。

=MATCH(LARGE(IF(DateNamedRange > TODAY() - 30, AmountNamedRange, 0), 2), IF(DateNamedRange > TODAY() - 30, AmountNamedRange, 0), 0)
(まだ配列数式です)

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

関連情報