いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Excel)セル内の改行だけの行を削除する

 Excelで、セル内の連続する改行を1つだけにし、さらにセルの先頭・末尾にある改行を削除する方法です。
 Microsoft365で2022年9月ごろに利用可能となったTEXTSPLIT関数を使用しています。

  • TEXTSPLIT関数を使って改行(CHAR(10))を区切り文字として文字列を分割し、TEXTJOIN関数を使って再度結合することにより、セル中の改行だけの行を削除することができます。
  • 改行を表示に反映させる(「折り返して全体を表示する」にチェックを入れておく)設定が必要です。

手順

※各セルの文字列は上寄せで表示するよう設定されています。B3セルの文字列がそうでないように見えるのは先頭に改行があるからです。


 対象となる文字列がB3:B5に文字列が入力されています。
 これらの文字列のうち連続する改行を1つにまとめ、さらに先頭や末尾にある改行を削除することで、「改行だけの行」をなくした結果をC3:C5に表示させるものとします。


 関数を使って解決しますが、その前に出力先であるC3:C5の範囲を選択してセルの表示設定のダイアログを出現させ(右クリック→「セルの書式設定」)、「折り返して全体を表示する」にチェックを入れておきます。


 そしてC3セルに式を入力することで、改行だけの行を取り除くことができました。
 式の内容は下記の通りです。

 C3セル

=TEXTJOIN(CHAR(10),,TEXTSPLIT(B3,CHAR(10)))

 「TEXTSPLIT(B3,CHAR(10))」の部分により、改行(CHAR(10))を区切り文字として文字列を分割しています。
 そしてTEXTJOIN関数を使い、分割された各文字列の間に改行(CHAR(10))を挿んで再度結合しています。
 分割したものを結合しているので元の文字列に戻ってしまいそうですが、TEXTJOIN関数の第2引数に何も指定していない(TRUEとしたときと同じく空白を無視する、つまり空白を結合の対象としない)ところがポイントです。これにより「北海道」「東京」「大阪」の3つの文字列だけが結合の対象となり、結果的に連続した改行や先頭・末尾の改行が生じない、というわけです。


 式を下方にコピーした結果です。
 もともと改行だけの行を含んでいない文字列には影響が出ないことが確認できます。