今回は、Excel内の、数値とテキストを区切る方法をご紹介します。フラッシュフィルや、Powerquery、数式、置換などで区切る事も可能ですが、今回は、新しい関数を使用します。どの様なモノかみていきましょう。
紹介記事の人物
橋本 由夏(はしもと ゆか)
Excelの作家(主に、フリーランスとして活動しています。)
著書:Excel厳選テクニック本を出版コチラから購入出来ます。
職 業:Excel作家、ExcelのYouTuber、Excel・Wordの講演
出身地:熊本県
趣 味:Excelでどれだけ時短して、早く仕事が終わるかを追求する
経 歴:民間、パソコンインストラクター、公的機関で勤務経験あり
数字とテキストを区切る最も簡単な方法
REGEXEXTRACT関数(レジエクスエクストラクト)
この様な、表があります。このIDから、数値を取り出します。又、このIDの列は、IDと数値の間に、半角、全角スペースがついているセルもあります。データが一貫性を保っているのであれば、フラッシュフィルや、Powerquery、テキスト関数などが使用できますが、一貫性の無いデータを抽出する関数をご紹介します。
REGEX関数(レジエクス関数)を使用すると、パターンを認識して、抽出出来たり、置換出来ます。
ここでは、REGEX関数(レジエクス関数)を使用を使用しましょう。
regeと入力すると、3つの候補が現れます。この3つの関数は、抽出パターンを見つけてそれぞれ抽出します。
この場合、REGEXEXTRACT関数(レジエクスエクストラクト)は、パターンを見つけて、置き換えることが出来ます。
タブで決定して、最初の引数は、データが含まれるテキストです。
次の引数は、パターンです。
バックスラッシュと、d+を入力して、エンターキーを押します。
すると、この様に、数値が表示されます。又、数値の桁数は関係なく、任意の桁数が表示されます。
下にオートフィルすると、全ての数値が表示されます。
この際、バックスラッシュdで数値を認識します。ですので、ここでは、IDの中の数値を見つけています。
では、+を【Del】で消してみます。
すると、IDの次の1ケタの数値が表示されます。この場合、+を入力すると、数値以外の文字が見つからなくなるまで、数値の検索をすることとなります。
又、小文字のdを大文字のDと入力すると、
IDというテキストが表示されます。
下にオートフィルすると、全てのテキストが表示されます。
又、IDの数値の後ろに、アルファベットをこの様に入力した場合は、REGEXEXTRACT関数(レジエクスエクストラクト)と、REGEXREPLACE関数(れじぇっくすりぷれいす)を使用して、セルから、テキストと、数値を素早く、表示させる方法をご紹介します。
データのばらつきを区切る
この様なデータがあり、全角・半角とばらつきがあります。データの列の、数値とテキストを抽出します。
regeと入力すると、3つの候補が現れます。
この場合も、REGEXEXTRACT関数(レジエクスエクストラクト)は、パターンを見つけて、置き換えることが出来ます。
IDの時と同じように、数値とテキストを抽出しました。
しかし、後ろのテキストは繁栄されてません。データの3行目は、【ABC1235EF】なのに対して、【ABC】の文字列しか抽出されてない状態になっています。
REGEXEXTRACT関数(レジエクスエクストラクト)には、もう一つ引数があります。
3番目の引数は、デフォルトで0と設定してあるので、セル内に一致する文字列を返します。なので、データの3行目は、ABCが見つかり、ABCを取得して、データとして返しました。
ここでは、一致するデータ全てが欲しい時、TEXTJOIN関数を使用します。
引数の文字の区切りは、【”-”】としておきます。
=TEXTJOIN(“-“,,REGEXEXTRACT(B5,”\D+”,1))
これで、Enterキーを押すと、後ろにある、文字列を抽出出来ます。
GHと追加しても、テキストの欄にGHと追加されます。
したがって、REGEXEXTRACT関数(レジエクスエクストラクト)の3番目の引数に、1と入力すると、一致する条件、一致する全ての文字列をセルから抽出して、結合することが可能になります。
次に、アルファベットに全角と、半角がいりまじっています。ココでは、全角・半角の両方を抽出する為に、
数式を変更する必要があります。
数式;=REGEXEXTRACT(B6,”[A-Z]”)
ここで、ワイルドカードが出来てきます。ワイルドカード文字をパターンで使用するには、[A-Z]
A から Z の範囲内の任意の大文字になります。
注: 文字の範囲を指定するときは、文字を昇順で指定する必要があります。 たとえば、[Z-A] は有効なパターンではありません。
ワイルドカードの詳細な説明については、コチラの、記事をご参照ください。
この数式でエンターキーを押します。すると、Tが表示されます。
この条件に、最初に一致するのは、Tになります。
ここでも、後ろに、【+】を入力することで、文字列が見つからなくなるまで、文字列の検索をすることとなり、
TEXT全てが表示されます。
【E6】に、=REGEXEXTRACT(B6,”[a-z]+”)
【F6】に、=REGEXEXTRACT(B6,”[A-Z]+”)
上記を入力し、&で繋げると、アルファベットが全て表示されます。
まとめ
今回は、REGEXEXTRACT関数(レジエクスエクストラクト)を使用して、文字とテキストを分割する方法の一部をご紹介しました。
コメント