2013 年 4 月 26 日の Stephen Roy の質問に似ており、Barry Houdini が回答しています。この一般的な式ごとに名前付き範囲があります
{=IFERROR(INDEX(Range,SMALL(IF(
MATCH(Range,Range,0)=ROW(INDIRECT("1:"&ROWS(Range))),
MATCH(Range,Range,0)),ROW(INDIRECT("1:"&ROWS(Range))))),"")}
[明らかに 2003 年には IFERROR() を使用していません]
「範囲」自体は、名前付きの配列数式です。
数式は、範囲から一意のエントリを取得し、それらを別の「範囲」の「上部」に配置するために使用されます。ただし、INDEX() は、期待される配列ではなく、単一の値のみを「格納」しているように見えます。Barry は、別の関数で ROW() をラップして {array} を失うことについて話しました。最初の ROW() が複数の値を返し、正常に動作するように見えますが、最後の ROW() が最初の配列エントリのみに縮小されているように見えるため、INDEX() は単一の値のみを返します。ただし、これをメモリに保存しようとする代わりに、出力用にマルチセル範囲を選択し、CSE を使用すると、完全にうまく機能します。しかし、私はそれをする必要はありません。
INDIRECT() をいじってみましたが、まったく機能しません。
あなたの考えに感謝します、イアン・テイラー