エクセルでデータを扱っているとき、飛び飛びで入力されているデータを詰めて表示したいことがあるかと思います。
フィルター機能を使って、空白以外を表示してコピー&ペーストという方法もなくはないかと思いますが、今回はそれを関数で行う方法です。
文字だけだとわかりにくいですが、要は下記のようにデータを抽出する方法です。
さて抽出方法ですが、まず、事前準備として、A列に通し番号を振ります。
で、下記の式を任意のセルに入力します。
=IFERROR(INDEX($B$1:$B$10,SMALL(IF($B$1:$B$10<>"",ROW($B$1:$B$10),""),A1)),"")
上記の式を入力したら、Ctrl + Shift Enter で式を確定させます。
なお、セルの範囲などは適当に変えてください。
また、抽出したい範囲は絶対参照にしておくと、セルをコピーした時に、範囲がズレません。
作業としては以上です。
あとは、セルの右下隅の四角をドラックしてセルをコピーすると、空白セルなしデータを抽出できます。
また、IFERROR関数を使って、データの最後まで来たら、それ以降はなにも表示されないようにしています。
IFERROR関数は、式がエラーになったときの処理を指定できるので便利です。
以上、データが入力されているセルだけを抽出する方法でした。