Excel:文字列をデリミタやパターンで分割、文字と数字を分離

  • これを共有
Michael Brown

Excelで数式やテキストの分割機能を使ってセルを分割する方法を説明します。 カンマやスペースなどの区切り文字でテキストを分割する方法、文字列をテキストと数値に分割する方法などが学べます。 .

1つのセルのテキストを複数のセルに分割することは、Excelユーザーなら誰もが一度は経験する作業です。 以前の記事で、Excelでセルを分割する方法として テキストからカラムへ 特集と フラッシュフィル 本日は、数式を使った文字列の分割方法について、詳しくご紹介します。 スプリットテキスト ツールを使用します。

    Excelで数式を使用してテキストを分割する方法

    Excelで文字列を分割する場合、一般的にはLEFT、RIGHT、MID関数とFIND、SEARCHを組み合わせて使用します。 一見、複雑そうに見える数式もありますが、実際には非常にシンプルで、以下の例がヒントになります。

    カンマ、セミコロン、スラッシュ、ダッシュなどの区切り文字による文字列の分割

    Excelでセルを分割する場合、文字列中の区切り文字の位置を特定することが重要です。 作業に応じて、大文字と小文字を区別しないSEARCHまたはFINDを使用します。 区切り文字の位置がわかったら、RIGHT、LEFT、MID関数を使って文字列の該当部分を抽出します。 理解を深めるために、次のように考えてみましょう。の例です。

    のSKUのリストがあったとします。 項目-色-サイズ パターンがあり、その列を3つに分割したい場合。

    1. を抽出する。 項目名 (1番目のハイフンより前のすべての文字)、B2に次の数式を挿入し、列の下にコピーしてください。

      =left(a2, search("-",a2,1)-1)とする。

      この式では、SEARCHが文字列中の最初のハイフン("-")の位置を決定し、LEFT関数がそれより左の文字をすべて抽出します(ハイフンの位置から1を引くのは、ハイフン自体を抽出したくないからです)。

    2. を抽出する。 (1番目と2番目のハイフンの間のすべての文字)をC2に入力し、次の数式を他のセルにコピーダウンします。

      =mid(a2, search("-",a2) + 1, search("-",a2,search("-",a2)+1) - search("-",a2) - 1)

      この数式では、ExcelのMID関数を使って、A2からテキストを抽出しています。

      4種類のSEARCH機能により、抽出開始位置と抽出文字数を算出します。

      • スタート番号 は最初のハイフンの位置+1。

        search("-",a2) + 1

      • 抽出する文字数 : 2つ目のハイフンの位置と1つ目のハイフンの位置の差から1を引いた値。

        search("-", a2, search("-",a2)+1) - search("-",a2) -1

    3. を抽出する。 大きさ (3つ目のハイフン以降の全ての文字)の場合、D2に以下の計算式を入力してください。

      =right(a2,len(a2) - search("-", a2, search("-", a2) + 1)))

      この式では、LEN関数が文字列の全長を返し、そこから2番目のハイフンの位置を引きます。 その差が2番目のハイフン以降の文字数となり、RIGHT関数がそれを抽出します。

    同様に、他の文字でカラムを分割することもできます。 必要なのは、「-」を必要な区切り文字に置き換えることだけです(例:「-」を「-」に置き換える)。 空間 (" "), カンマ (","), かっきる ("/"), コロン (";"), セミコロン (";") といった具合に。

    ヒント:上記の式で、+1 と -1 は区切り文字の文字数に対応します。 この例では、ハイフン(1文字)です。 もし、区切り文字が2文字、例えばカンマとスペースからなる場合は、カンマ("、")のみを SEARCH 関数に入力し、+1 と -1 の代わりに +2 と -2 を使用します。

    Excelで文字列を改行で分割する方法

    スペースでテキストを分割するには、前の例と同様の数式を使用します。 唯一の違いは、改行文字を数式に直接入力できないため、CHAR関数で入力する必要があることです。

    仮に、分割したいセルがこのような形をしているとします。

    先ほどの数式を、ハイフン("-")をCHAR(10)で置き換えたものです。

    • を抽出する。 項目名 :

      =left(a2, search(char(10),a2,1)-1)とする。

    • を抽出する。 :

      =mid(a2, search(char(10),a2) + 1, search(char(10),a2,search(char(10),a2)+1) - search(char(10),a2) - 1)

    • を抽出する。 大きさ :

      =right(a2,len(a2) - search(char(10), a2, search(char(10), a2) + 1))

    そして、その結果はこのようになります。

    Excelでテキストと数字を分割する方法

    そもそも、すべての英数字の文字列に有効な万能の解決策はありません。 どの数式を使うかは、特定の文字列パターンに依存します。 以下に、よくある2つのシナリオの数式を掲載します。

    文字+数字」パターンの文字列を分割する。

    例えば、文字と数字を組み合わせた文字列があり、文字列の後に必ず数字が来る場合、このように文字と数字が別々のセルに表示されるように、元の文字列を分割したいとします。

    その結果、2種類の方法で実現することができる。

    方法1:桁数を数え、その数の文字を抽出する。

    文字列の後に数字が来る場合の最も簡単な分割方法は、次のとおりです。

    への エキストラナンバー であれば、0から9までのすべての可能な数字を文字列から検索し、数字の合計を求め、その数の文字を文字列の末尾から返します。

    A2に元の文字列を入れると、次のような式になる。

    =RIGHT(A2,SUM(LEN(A2) - LEN(SUBSTITUTE(A2, {"0","1","2","3","4","5","6","7","8","9"},""))))

    への 抽出テキスト そこで、元の文字列の長さA2から抽出した桁数C2を引いて、文字列の文字数を計算します。 その後、LEFT関数を使って、文字列の先頭からその文字数分を返します。

    =left(a2,len(a2)-len(c2))

    ここで、スクリーンショットに示すように、A2が元の文字列、C2が抽出された番号です。

    方法2:文字列の1桁目の位置を調べる

    別の方法として、以下の式を使って、文字列の最初の桁の位置を決定することもできます。

    =MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A2&"0123456789"))

    最初の桁の位置がわかれば、非常に簡単なLEFTとRIGHTの計算式を使って、テキストと数字を分割することができます。

    抽出する場合 テキスト :

    =left(a2, b2-1)

    抽出するには 番号 :

    =right(a2, len(a2)-b2+1)

    ここで、A2 は元の文字列、B2 は最初の数字の位置である。

    1桁目の位置を保持するヘルパー列を取り除くには、LEFT関数とRIGHT関数にMIN式を埋め込めばよい。

    抽出するための式 テキスト :

    =LEFT(A2,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A2&"0123456789"))-1)

    抽出するための式 計数 :

    =RIGHT(A2,LEN(A2)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A2&"0123456789"))+1)

    数字+文字列」パターンの文字列を分割する。

    数字の後にテキストが表示されるセルを分割する場合、次のようにします。 エキストラナンバー を次の式で表す。

    =left(a2, sum(len(a2) - len(substitute(a2, {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}, ""))))

    この式は、前の例で説明した式と似ていますが、文字列の左側から数値を得るのに、RIGHTの代わりにLEFT関数を使用している点が異なります。

    数字が決まったら 抜粋 テキスト は、元の文字列の全長から桁数を減算することで算出される。

    =right(a2,len(a2)-len(b2))

    ここで、以下のスクリーンショットに示すように、A2は元の文字列、B2は抽出された番号です。

    ヒント テキスト文字列の任意の位置 には、この式と抽出ツールのいずれかを使用します。

    このように、Excelではさまざまな関数の組み合わせで文字列を分割することができます。 このように、数式はわかりにくいので、サンプルのExcel Split Cellsワークブックをダウンロードして、よく調べてみるとよいでしょう。

    もし、Excelの複雑な数式を理解するのが苦手なら、このチュートリアルの次のパートで紹介する、Excelでセルを分割する視覚的な方法をお勧めします。

    テキスト分割ツールでExcelのセルを分割する方法

    Excelで列を分割する別の方法として、弊社のUltimate Suite for Excelに含まれるSplit Text機能を使用すると、以下のオプションが提供されます。

      それでは、それぞれのオプションについて詳しく見ていきましょう。

      文字単位でセルを分割する

      でセルの内容を分割したい場合は、このオプションを選択します。 指定された文字が出現するたびに .

      この例では、(1) の文字列を、(2) の文字列を、(3) の文字列に変換します。 項目-色-サイズ このチュートリアルの最初の部分で使用したパターンを覚えているかもしれませんが、3つの異なる数式を使用して3つの異なる列に分離しました。 ここでは、2つのステップで同じ結果を達成する方法を紹介します。

      1. Ultimate Suiteがインストールされていることを前提に、分割するセルを選択し、その上で スプリットテキスト のアイコンが表示されます。 エイブルビットのデータ タブで表示します。

      2. があります。 スプリットテキスト ペインがExcelウィンドウの右側に開くので、以下の操作を行います。
        • を拡大する。 文字単位で分割 グループで、あらかじめ定義された区切り文字の1つを選択するか、他の文字を入力します。 カスタム ボックスを使用します。
        • セルを列に分割するか、行に分割するかを選択します。
        • で結果を確認します。 プレビュー セクションをクリックし スプリット ボタンをクリックします。

      ヒント:セル内に複数の連続した区切り文字がある場合(たとえば、複数の空白文字がある場合)、その区切り文字に対応する文字列を選択します。 連続したデリミタを1つとして扱う ボックスを使用します。

      3つの計算式と5つの関数を必要とした作業が、数秒とボタンクリックで完了します。

      文字列でセルを分割する

      このオプションを使うと、文字列の分割に 文字組合せ 技術的には、1つまたは複数の異なる部分文字列を各部の境界として使用することによって、文字列を部分に分割します。

      例えば、接続詞 " で文章を分割するには " と " または " を展開します。 文字列による分割 グループに分け、区切り文字列を1行に1つずつ入力してください。

      その結果、各デリミタの出現箇所ごとにソースフレーズが分離される。

      ヒント:「or」だけでなく「and」も、「orange」や「Andalusia」などの単語の一部になっていることが多いので、必ず 空間 前後 または を使用すると、単語の分割を防ぐことができます。

      もう一つ、実際の例を挙げましょう。 例えば、次のような日付の列を外部ソースから取り込んだとします。

      5.1.2016 12:20

      5.2.2016 14:50

      この形式はExcelでは一般的でないため、Date関数は日付や時刻の要素を認識しません。 日、月、年、時、分を別々のセルに分割するには、以下の文字を 文字列による分割 ボックスを使用します。

      • ドット(.)で日・月・年の区切り
      • コロン(:)で時・分を区切る
      • 日付と時刻を区切るスペース

      を打つ。 スプリット ボタンをクリックすると、すぐに結果が表示されます。

      マスク(パターン)によるセルの分割

      マスクでセルを区切ることは、文字列を分割することを意味する パターンに基づいて .

      このオプションは、均質な文字列のリストをいくつかの要素、つまり部分文字列に分割する必要がある場合に非常に便利です。 複雑なのは、ソーステキストは与えられた区切り文字の出現箇所ごとに分割することはできず、特定の出現箇所でのみ分割されることです。 次の例を見れば、理解しやすくなります。

      あるログファイルから抽出された文字列のリストがあるとする。

      日付と時間、エラーコード、例外の詳細を3つのカラムに分けたいのですが、日付と時間の間にスペースがあり、1つのカラムに表示されるはずの例外テキストにスペースがあるため、区切り文字としてスペースを使用することができません。

      解決策は、以下のようなマスクで文字列を分割することです。 *ERROR:*例外:*。

      ここで、アスタリスク(*)は任意の文字数を表す。

      コロン(:)が区切り文字に含まれているのは、結果のセルにコロンが表示されないようにするためです。

      そして、今度は、拡張 マスクによる分割 の項を参照してください。 スプリットテキスト ペインに、マスクを入力します。 デリミタを入力する をクリックします。 スプリット :

      結果はこのような感じになります。

      注)文字列をマスクで分割することは ケースセンシティブ そのため、マスクの文字は必ずソース文字列と同じように入力してください。

      この方法の大きな利点は柔軟性である。 例えば、元の文字列がすべて日付と時刻の値を持ち、それらを別の列に表示させたい場合、このマスクを使用する。

      * ERROR:例外:*。

      このマスクは、元の文字列を4つの部分に分割するようアドインに指示するものである。

      • 文字列の中で見つかった最初のスペースより前のすべての文字 (日付)
      • 1つ目のスペースと単語の間の文字 ERROR
      • テキスト間 ERROR 例外あり。 (エラーコード)
      • その後に続くものすべて 例外あり。 (例外文)

      Excelで文字列を分割する簡単な方法をご紹介しましたが、気に入っていただけたでしょうか? 評価版は下記からダウンロードできますので、ぜひお試しください。 それでは、来週も当ブログをよろしくお願いします。

      ダウンロード可能なもの

      Excelのセル分割の計算式(.xlsxファイル)

      Ultimate Suite 14日間フル機能版(.exeファイル)

      Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。