配列で空白を除くデータを抽出する

2013Excel関数技BEST 73回(後半)

INDEX関数と配列で空白以外のデータを抽出したい

空白を含むデータがA列に入力されています。そこから、データだけを抽出して、別セルに取り出す方法を考えます。
今度は、配列を使う方法で考えます。

配列で空白以外のデータを抽出

最終的に抽出欄に取り出す関数は、INDEX関数です。INDEX関数は、範囲の中で、指定した行位置、列位置にあるセルの内容を返す関数です。
この関数を使うと範囲とその範囲の行番号がわかれば値を取り出せます。 データの入っている対象範囲は、A2:A12までと決まっていますから、データのあるセルの行番号を調べればいいのです。
見れば分かることでも、数式で表すのはけっこう難しい。配列で考えましょう

空白以外のデータだけ取り出す

配列で行番号を返す式

配列で行番号を返す式は、最初は1番小さい行番号を返すようにします。
空白以外のデータだけ取り出す2
行番号を返す式は、次のように入力し、CTRL+SHIFTを押しながらENTERで確定します。 この時、1番目は2番めは・・・という、マクロならFor~Next ステートメントで処理をする繰り返しを、この例では、ROW(A1),ROW(A2),ROW(A3)・・・でやっています。
=SMALL(IF(($A$2:$A$12)="",99,ROW($A$2:$A$12)),ROW(A1))
空白以外のデータだけ取り出す3
このSMALL関数の式を抽出したいINDEX関数の数式の中で入れ子(ネスト)して使うようにします。
空白以外のデータだけ取り出す4
A20には、次の数式がはいりました。空白を含む列からデータのみを抽出できました。
空白以外のデータだけ取り出5