【エクセル関数】複数の空白セルを削除して並び替える

投稿者: | 2021年1月23日
excelアイコン

エクセルバージョン

マイクロソフト365

 

本日は関数で空白セルが複数あるデータを空白のないデータにする方法について解説していきたいと思います。

今回の下記のような飛び飛びの空白データから空白を削除したデータが作成できるようになります。

飛び飛び空白データ

空白サンプル

完成後

空白削除データ

それではいってみましょう!

 

空白削除手順

手順

➀データがあるセルの行番号を取得します(ROW関数

②取得した行番号を昇順に並び替えます(SMALL関数

③データ列と②で取得した行番号を連結して文字を作成して参照させて出来上がります(INDIRECT関数

大まかにこんな感じで出来上がります(*^^)v

 

今回のサンプルデータ

A列空白が混在しています。

空白サンプル

 

データがあるセルの行番号を取得する

ますデータが存在するセルの行番号を取得します。

これを実現させるためにIF関数を使用していきます。

 

If関数

まずB1セルに =if と入力してTabキーを押して、下記赤枠をクリックして関数の引数ダイアログを表示させます。

if

 

関数の引数ダイアログが表示されたら以下のように入力します。

第1引数(論理式)→ A1セルが空白ではなかったら A1<>””

第2引数(値が真の場合)→ データの行番号を取得 ROW()

第3引数(値が偽の場合)→ シートの最終行番号を取得 ROWS(A:A)

これでA1セルが空白ではなかったらデータの行番号を取得して、空白だったらページの最終行番号を取得するといったことを実行します。

引数ダイアログrow

OKボタンでB1セルに自動で下記のような数式が出来上がります。

 

あとはB1セルの右下にカーソルを合わせると十字キーのフィルハンドルが出現するのでデータ分オートフィルさせます。

すると下記のB列のような結果になります。

結果

作業列1

ここまで出来てしまえばあとは簡単です!

 

SMALL関数とINDIRECT関数

INDIRECT関数で列をA列に指定して、B列の行番号をSMALL関数で昇順に並び替え、文字を連結させ参照させると、A列の入力があるデータが先に並んで、空白データはシートの最終行番号なので後ろに並び変わります。

C1セルに下記の1文をコピペしデータ分オートフィルさせます。

 

完成です\(^^)/

空白削除昇順出来上がり

あとはいらないB列は非表示などにすればいいわけです。

関連記事

【関数】並び替えを得意とするSORTBY関数を使用して空白を削除する方法こちら

【VBA】空白セルの削除上詰めする方法はこちら

 

まとめ

関数が複雑になる場合は、このようにセルを活用したほうが簡単に作成できると思います。

そうすることによって複雑な関数も簡単に作成することが可能になります(^O^)

 

以上です(^^)