これまでの連載で「文字列を操作する関数」をいくつか紹介してきた。これらのほかにもExcelには数多くの文字列関数が用意されている。ということで、今回はまだ紹介していない文字列関数の使い方を解説していこう。滅多に使わない関数であるが、状況によっては必要になる関数なので、その概要だけでも覚えておくとよいだろう。

これまでに紹介してこなかった文字列関数

これまでの連載では、文字列を操作するときによく使用する関数を紹介してきた。一方、滅多に使わないけれど「必要なときには必要」という文字列関数もある。今回はそういった関数を紹介していこう。どの関数も使い方は極めて簡単なので、「こんな機能を提供してくれる関数がある」ということだけを覚えておけば十分だ。

  • 利用シーンは限定的だが、使える文字列関数

今回は、上図に掲載した8つの関数の使い方を紹介していく。そのほとんどがカッコ内に文字列(セル参照)を指定するだけで使用できるので、詳しい使い方を覚えるよりも「どのように動作するか?」を理解しておくとよい。

「セル内の改行」を削除(CLEAN)

まずは「印刷できない文字」を削除する関数CLEANから紹介していこう。「印刷できない文字」と言われてもピンと来ない方が多いと思うが、要は「セル内の改行」や「タブ文字」を削除する関数と考えればよい。

この関数は、セル内で改行されているデータを「改行なし」に整形するときに活用できる。前回の連載で紹介したスリム化した表を「改行なし」に戻す場合にも活用できるだろう。使い方は極めて簡単で、カッコ内にセル参照などで「文字列」を指定すればよい。

  • 関数CLEANの入力

「Enter」キーを押して関数CLEANを実行すると、「セル内の改行」が削除され、データが1行で表示されるようになる。

  • 「セル内の改行」を削除したデータ

なお、単に改行を削除するのではなく、改行の部分でデータを分割したいケースもあるだろう。このような場合は「データ」タブにある「区切り位置」を使用する。

  • 「セル内の改行」でデータを分割する場合

「区切り位置指定ウィザード」が表示されるので、最初の画面で「コンマやタブなどの区切り文字によって・・・」を選択する。次の画面では「その他」を選択し、その右にあるボックス内にカーソルを移動してから「Ctrl」+「J」キーを押す。これで「セル内の改行」を区切り文字に指定できる。

  • 区切り文字に「改行コード」を指定

あとは、ウィザードに従って作業を進めていくだけ。これで、以下の図のようにデータを分割することが可能となる。

  • 「セル内の改行」で分割されたデータ

操作手順そのものは難しくないので、「セル内の改行」を「Ctrl」+「J」キーで指定する、ということを覚えておけば十分だ。

不要なスペース文字のトリミング(TRIM)

続いては、「不要なスペース」を削除してくれる関数TRIMの使い方を紹介していこう。この関数もカッコ内に文字列(セル参照)を指定するだけで使用できる。

  • 関数TRIMの入力

「Enter」キーを押して関数TRIMを実行すると、以下の図のような結果になる。

  • 関数TRIMの結果

上図に示した例の場合、「テラオ ヨシオ」のデータに不要なスペースが含まれていないため、元のデータと同じ文字列が返される。続いて、この関数をオートフィルでコピーすると、以下の図のような結果が得られる。

  • 関数TRIMをオートフィルでコピー

関数TRIMは、データの先頭や末尾にある「半角スペース」または「全角スペース」を削除してくれる関数となる。「データの前後に不要なスペースが入力されている・・・」といった不具合を解消するときに活用するとよいだろう。

ちなみに、データの途中にあるスペースは削除されない仕様になっている。よって、途中にある「半角スペース」や「全角スペース」はそのまま残ることになる。途中のスペースを「半角」または「全角」に統一したいときは、「全角スペース」→「半角スペース」などの置換を行わなければならない。

そのほか、データの途中に「2つ以上の連続スペース」が入力されている場合に、余計なスペースを削除して1つにする、という処理も行われる。こちらも「半角スペース」と「全角スペース」の両方が対象になるが、その動作に注意しておく必要がある。簡単な例を紹介しておこう。

  • 連続したスペースの削除

上図に示した「ツカハラ  タケヒコ」のデータは、姓と名の間に「全角スペース」→「半角スペース」という順番で2つのスペースが入力されている。この場合、後ろにある「半角スペース」が削除され、「全角スペース」だけが残る。

一方、「ニシオカ  ヨシエ」のデータは、姓と名の間に「半角スペース」→「全角スペース」という順番で2つのスペースが入力されている。この場合は、後ろにある「全角スペース」が削除される。その結果、「半角スペース」だけが残る。

このように、2つ以上の連続したスペースが見つかった場合は、半角/全角に関係なく、「最初のスペース」だけを残す仕組みになっている。よって、この場合も「途中にあるスペースの半角/全角は統一されないまま・・・」となる。

半角/全角の統一(ASC/JIS)

データの半角/全角を統一したいときは、ASCやJISといった関数を使用する。

 ASC ・・・・ データを半角に変換する
 JIS ・・・・ データを全角に変換する

たとえば、「半角フリガナ」を「全角フリガナ」に変換したい、といった場合は関数JISを使用する。具体的な例を示していこう。

以下に示した図では、「氏名カナ」のデータが「半角」または「全角」で入力されており、どちらか一方に統一されていない。これを「全角カタカナ」に統一したいときは、以下の図のように関数JISを記述すればよい。

  • 関数JISの入力

これで「半角カタカナ」を「全角カタカナ」に変換できる。

  • 関数JISにより全角カタカナに変換したデータ

あとは、この関数JISをオートフィルでコピーするだけ。これで全データを「全角カタカナ」に統一できる。

  • 関数JISをオートフィルでコピー

なお、姓と名の間にあるスペースだけは「半角」にしたい、というケースもあるだろう。このような場合は、上記の作業を行った後に「全角スペース」→「半角スペース」の置換を行えばよい。

ちなみに、この作業を関数ASCで行おうとすると、カタカナの部分まで「半角」になってしまうことに注意しなければならない。よって、

 (1)すべてのデータをいちど「全角」に変換する
 (2)「値の貼り付け」を利用して、「関数」を「通常の文字列」に上書きする
 (3)「全角スペース」を「半角スペース」に置換する

という手順で作業を進めていくのが基本だ。これで「全角カタカナ」&「半角スペース」の形にデータを統一できる。

そのほか、「アルファベット」や「記号」の半角/全角をASCやJISでコントロールすることも可能だ。以下に簡単な例を紹介しておくので、参考にするとよいだろう。

  • アルファベットや記号の全角/半角

大文字/小文字の統一(UPPER/LOWER/PROPER)

アルファベットの大文字/小文字を変換する関数として、以下のような関数も用意されている。これらの関数も、カッコ内に文字列(セル参照)を指定するだけで使用できる。

 UPPER ・・・・ すべて大文字に変換
 LOWER ・・・・ すべて小文字に変換
 PROPER ・・・・ 単語の先頭だけを大文字に変換

今度は、氏名をローマ字で記した「Name」の列を使って具体的な例を紹介していこう。現時点では、大文字/小文字が統一されていないデータになっている。これを関数PROPERで「最初の1文字だけ大文字」の形に統一してみよう。

  • 関数PROPERの入力

  • 関数PROPERで先頭だけを大文字にしたデータ

関数を入力できたら、あとはオートフィルでコピーするだけ。これで全データの大文字/小文字を統一できる。

  • 関数PROPERをオートフィルでコピー

なお、これらの関数は全角の「アルファベット」や「ギリシア文字」にも対応している。参考までに簡単な例を紹介しておこう。

  • 全角のアルファベットやギリシア文字の変換

この図をよく見ると、E6セルにある「π」が大文字になっていないことに気付くと思う。これは「円周率π」で1つの単語とみなされていることが原因だ。つまり、「π」の文字は単語の先頭ではないので「小文字のまま」という結果になる。

数値データを漢数字に変換(NUBERSTRING)

最後に紹介するのは、数値データを「漢数字」に変換してくれる関数NUBERSTRINGだ。この関数のみ第2引数を指定する必要がある。指定可能な値は「1」~「3」の3種類。まずは、第2引数に「1」を指定した例を紹介しておこう。

  • 関数NUBERSTRINGの入力

この関数NUMBERSTRINGをオートフィルでコピーすると、以下の図のような結果が得られる。数値データが「漢数字」の文字列データに変換されているのを確認できるだろう。

  • 漢数字に変換されたデータ

第2引数に指定する「1」~「3」の値は「漢数字の記述方法」を指定するもので、それぞれ以下の図に示したような記述方法になっている。

  • 第2引数の値と漢数字の形式

とてもユニークな関数ではあるが、「どのような場面で活用できるのか?」と聞かれると回答に窮してしまう。「住所の数字を漢数字表記に変換できたら・・・」とも思ったが、残念ながらそのような使い方はできないようだ。

たとえば、「千代田区一ツ橋1-1-1」というデータを関数NUBERSTRINGで変換しようとすると、その結果は「#VALUE!」のエラーになってしまう。数字の部分だけを漢数字に変換してくれるとよいのだが、そのような使い方には対応していない。変換できるのは「数値データ」もしくは「数字だけの文字列データ」となり、それ以外の文字を含むデータはエラーになってしまう。

また、「8月25日」などの日付データを「八月二十五日」に変換することも不可となっている。この場合は「四万五千百六十三」のように、日付のシリアル値を漢数字に変換したものが結果として返される。つまり、意味のない漢数字の羅列になってしまう訳だ。

このように、関数NUBERSTRINGは「使い道を考えるのが難しい関数」といえる。

今回の連載で紹介した関数は、滅多に使わない関数かもしれないが、いざというときには重宝する関数となる。よって、念のため覚えておいても損はないだろう。