他のアプリのデータをエクセルにコピペで貼り付けた時に、スペースのように見えて消せない文字が貼り付けられる場合があります。
また、『・』のように見た目は点に見えるんですけど、実は何の文字かよくわからない文字が貼り付けられたりします。
エクセルの中だけでコピペしている分にはこんな問題は起きないんですが、エクセル以外のアプリのデータをエクセルに貼り付けた時に起こることが多いです。
こういったなんの文字かよくわからないのは『制御文字』と呼ばれるものなんですね。
プログラミングの世界では『制御文字』のことを『ゴミ』とかいったりして、邪魔者扱いしますけど^^
制御文字はDELキーでも削除できない場合が多いので、今回は制御文字をきれいに削除する方法を紹介します。
印刷できない制御文字(ゴミコード)をCLEAN関数できれいに削除する
『制御文字』を削除するのはCLEAN関数です。
名前の通り、『クリーン』してくれる関数なので覚えやすいんじゃないでしょうか。
さっそく使い方を紹介します。
下のエクセルを例に、C3のセルに『ABC・DEF』のように制御文字(『・』)が混入されている文字列から、CLEAN関数で制御文字を削除していきます。
確認しやすいように、C3には『=”ABC” & CHAR(11) & “DEF”』を入力して、11というコードの制御文字を無理やりABCとDEFの間に挿入しました。
そして、D3のセルに『=CLEAN(C3)』と入力します。
見ての通り、C3の文字列から制御文字を削除した『ABCDEF』の文字列が表示されています。
念の為文字列の長さを比べると、CLEAN関数前が7文字(ABCDEFの6文字+制御文字の1文字)だったのが、制御文字が削除されてCLEAN関数で6文字になっていることがわかると思います。
CLEAN関数の書式(書き方)
CLEAN関数の書式(書き方)です。
引数には文字列を指定するだけなので、簡単だと思います。
文字列そのものより、『文字列が入力されているセルの位置』を指定するのが一般的ですね。
CLEAN関数が削除する制御文字(ゴミコード)の一覧
続いて、『制御文字』のことを簡単に解説するので参考程度に読んでください。
制御文字というのは印刷されない文字のことで、その名の通り文字の制御などをするコードです。
文字のコードを表すものにASCIIコードというのがありますが、ここで解説している制御文字というのは、下の表の黄色の範囲に入っているものです。
表の赤枠部分(ASCII文字)の列が『表示される文字』を示していますが、黄色の制御文字の場合は文字として表示されることはありません。(一部『・』のような表示になるのもあります)
CLEAN関数は黄色の範囲の制御文字を全て削除します。(最後のDEL(127)を除く)
逆に、CLEAN関数は『文字以外のコードを全て削除する』と覚えた方がいいかも^^
なので、何かよくわからない文字がセルに入っているかもと思った場合は、このCLEAN関数でセルをクリーンしてみください。
CLEAN関数でセル内改行を削除することもできる
エクセルでよく使う『セル内改行』も制御文字です。
『ALT』+『Enter』キーで入力する改行ですね。
このセル内改行は、さきほどのASCIIコード表では『LF(十進コードでは10)』に該当します。
なので、セル内の改行を削除したい場合もCLEAN関数は使えます。
ただし、セル内改行以外の制御文字を削除したくてCLEAN関数を使うと、セル内改行も同時に削除されるので注意してください。
まとめ
- 『文字以外の余計な文字を全て削除する』のがCLEAN関数。
- セル内改行も削除するので、使い方に注意。
他のアプリケーションから文字をコピーしてエクセルに貼り付けるという場面はそんなにないかもしれません。
ただ、他の人から入手したエクセルやいろんな人と共有しているエクセルなどでは、印刷されない制御文字が混入していることもあります。
『セル内に何かよくわからない文字が混ざっていそう』と思った時は、迷わずCLEAN関数を試してください。
文字以外の余計な制御文字(ゴミ)を削除してくれるので、すっきり(クリーン)した状態になりますよ^^